2012-04-24 8 views
2

保存をクリックすると、ストアドプロシージャによって2つのデータベースフィールドが作成され、次にユーザー入力用に3つのフィールド(2つのチェックボックスコントロールと1つのテキストボックス)ボタン私は3つのコントロールから情報を得ることができますが、データベースを介して入力された2つのコントロールからの情報はありません。どのように最初の2つのフィールドを取得できますか?OnClickイベントが発生したときにGridViewがデータバインドされた行を返さない

<asp:GridView ID="gvA1" runat="server" AutoGenerateColumns="false" DataKeyNames="CodeNo" AutoGenerateSelectButton="false" EnablePersistedSelection="True" Visible="false"> 
    <Columns> 
     <asp:TemplateField Visible="false" > 
      <ItemTemplate> 
       <%#DataBinder.Eval(Container.DataItem, "CodeNo")%> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField ItemStyle-Wrap="true" ItemStyle-Width="400px" HeaderText="Violation"> 
      <ItemTemplate> 
       <%#DataBinder.Eval(Container.DataItem, "CodeViolationCited") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:CheckBox ID="A1Accordion_cbPool" runat="server" Text="Pool:" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:CheckBox ID="A1Accordion_cbSpa" runat="server" Text="Spa:" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Additional Comments" Visible="true"> 
      <ItemTemplate> 
       <asp:TextBox ID="A1Accordion_tb" runat="server" TextMode="MultiLine"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

背後にあるコード:

protected void SaveAndCollapseA1(object sender, EventArgs e) 
{ 
    //good stuff 
    CheckBox myCheckBox_1 = gvA1.Rows[0].FindControl("A1Accordion_cbPool") as CheckBox; 
    CheckBox myCheckBox_2 = gvA1.Rows[0].FindControl("A1Accordion_cbSpa") as CheckBox; 
    TextBox myTextBox = gvA1.Rows[0].FindControl("A1Accordion_tb") as TextBox; 

    //not so good stuff 
    String myString1 = gvA1.Rows[0].Cells[0].ToString(); 
    String myString2 = gvA1.Rows[0].Cells[1].ToString(); 


} 

私はそれを考え出したが、私は十分な長さのリンクを経由して解決策を投稿する聞いていなかったが、あなたはそうと、列を変更した場合:

<asp:label ID="lblA1CodeNo" runat="server" text='<%# Eval("CodeNo") %>'></asp:label> 

その後、値が

答えて

0

...利用できます試してみてください。

<%# Bind("CodeViolationCited") %> 

代わりの

<%#DataBinder.Eval(Container.DataItem, "CodeViolationCited") %> 

評価が一つの方法である、バインドが双方向です。ラベル「オブジェクト」に変更

See Microsoft's documentation for data-binding expressions

+0

は、私はそれが私がそれを進めています動作します...ので、ウェブサイトを構築するように頼まれたDBAよ...それが利用できるように:) – Grixxly

+0

DBAにとっては悪くない:) – Ulises

関連する問題