2

我有一个 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>

那么这些值是可用的......

4

1 回答 1

0

尝试:

<%# Bind("CodeViolationCited") %>

代替

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

eval 是一种方式,bind 是两种方式。

有关数据绑定表达式,请参阅 Microsoft 的文档

于 2012-04-25T02:08:41.157 回答