2011-08-09 19 views
1

ここでは奇妙な状況です。私のFormViewコントロールでは、私はレイアウトのために<table>を入れました。行(<tr>)には、IDrunat="server"を追加しました。挿入物は、私が奇妙だと思ったいくつかのデータを保存しました。私はそのフィールドが保存されている理由と他のフィールドがない理由を調べましたが、唯一の違いはIDまたはrunat="server"<tr>に追加していないことです。 "runat"を取り外すと、インサートが正常に機能しました。テーブルを持つFormviewコントロール、runatサーバーに設定されたtrのコントロールは挿入されません

これは、コントロールまたはFormViewが初期化されているときと比べて、行が初期化される方法と関係があると考えています。これがどうして起こるのか?今のところ、テーブル行からIDを削除しています。

答えて

2

あなたはあなたの思考の正しい軌道に乗っています。

FormViewはトップレベルのコントロールのみを調べます。目的の入力コントロールの1つを別のサーバー側コントロールに埋め込むと、FormViewはそれを表示しません(外側のコントロールの内側に隠されています)。

<tr ID="row1" runat="server"> 
    <asp:TextBox ID="myTB" runat="server">12</asp:TextBox> 
</tr> 

唯一FormView:あなたがこれを持っていた場合でも、あなたの中にコードビハインドあなたは、<tr>

このように、サーバ側のうち、入力タグを取得するためにFindControlメソッドを使用する必要があると思いますは、最上位の要素(<tr>)です。あなたはこれをしなかった場合を除きあなたもあなたの分離コードTextBoxは表示されません。

TextBox myTB = (TextBox)row1.FindControl("myTB"); 

だから私の提案は<tr>要素から「ラナ」と「ID」タグをオフのままになります。それらは表示目的のためのものなので、サーバー側で実際にそれらを必要としません。

少しクリアすることを願っています。

+0

これで再生する必要があります。私はその行を表示するかどうかを設定するtrを使用していた...他の基準に応じて。ただし、FindControlを使用して説明したように、テキストボックスを確認することはできます。トップレベルの要素についての情報を少しも理解できませんでした。 –

+0

@MKenyonIIまあ、助けてくれてうれしい(少なくとも少しは)。がんばろう! – jadarnel27

関連する問題