0

VS2010

您好,我有一个网页,其中包含从数据库填充的 gridview。其中一个字段是复选框。我要做的是在单击复选框时更新数据库中的值。但是,我在该gvSiteInfo_CheckBoxUpdate()方法中有一个断点,并且永远无法到达。

您能指出我正确的方向以使其正常工作吗?我在网上找到的几个例子似乎和我的一样。

下面是我的标记的缩写版本。

<asp:GridView ID="gvSiteInfo" runat="server" 
    AutoGenerateColumns="False" OnSorting="gvSiteInfo_Sorting" 
    AllowSorting="True">
    <AlternatingRowStyle BackColor="#DCDCDC" />
    <Columns>
        <asp:BoundField DataField="prodHostHeader" HeaderText="Production Host Header" 
            SortExpression="prodHostHeader" />
        <asp:BoundField DataField="prodDirectory" HeaderText="Production Directory" 
            SortExpression="prodDirectory" />
        <asp:BoundField HeaderText="Active Issues" DataField="issueCount"
            SortExpression="issueCount" />
        <asp:TemplateField HeaderText="Testing Complete" SortExpression="true">
            <ItemTemplate>
                <asp:CheckBox ID="cbTestComplete" runat="server" CausesValidation="true" AutoPostBack="true" OnCheckedChanged="gvSiteInfo_CheckBoxUpdate"
                 Checked='<%# DataBinder.Eval(Container, "DataItem.testComplete").ToString().Equals("true") %>' />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:CheckBox ID="cbTestComplete" runat="server" CausesValidation="true" AutoPostBack="true" OnCheckedChanged="gvSiteInfo_CheckBoxUpdate"
                     Checked='<%# DataBinder.Eval(Container, "DataItem.testComplete").ToString().Equals("true") %>' />             
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

这是应该调用的代码

public void gvSiteInfo_CheckBoxUpdate(object sender, EventArgs e)
{
        SiteDB dbAccess = new SiteDB();
        dbAccess.updateSiteInfo();
}

---------------EDIT---------------------------- 这是我的page_load代码

    protected void Page_Load(object sender, EventArgs e){
        SiteDB dataAccess = new SiteDB();
        dataAccess.SelectedConnectionString = "WISQL01";

        DataTable dt = dataAccess.getSiteInfo();

        gvSiteInfo.DataSource = dt;
        gvSiteInfo.DataBind();
    }

- - - - - - -更新 - - - - - - - - - - - - - -

添加CausesValidation="true"<asp:checkbox>

4

2 回答 2

2

您需要在每次回发时重新创建网格内容(将网格重新绑定到数据源)。由于复选框单元格是动态生成的 - 必须在每次回发时重新创建它才能使事件处理程序生效。

于 2012-08-07T19:07:08.243 回答
1

您在绑定 GridView 时遇到问题,每次绑定时,都会删除您的事件。

您必须采用这种绑定行为

if(! IsPostBack)
{
  Bind();
}

并使用EnableViewState=true以保持您的gridview

于 2012-08-07T19:06:07.253 回答