2012-04-24 71 views
2

我有一个GridView,它由两个数据库字段组成,这两个数据库字段通过存储过程填充,然后点击保存时用户输入的三个字段(两个复选框控件和一个文本框)按钮我可以从三个控件中获取信息,但是没有任何信息是通过数据库填充的。我怎样才能得到前两个领域?当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 2012-04-25 02:13:31

+0

对DBA来说不错:) – Ulises 2012-04-25 02:14:40