0

VS2010

こんにちは、データベースから入力されたグリッドビューを含む Web ページがあります。フィールドの 1 つがチェックボックスです。私がやろうとしているのは、チェックボックスがクリックされたときにデータベースの値を更新することです。ただし、gvSiteInfo_CheckBoxUpdate()メソッドにブレークポイントがあり、到達することはありません。

これを適切に機能させるために正しい方向に私を向けることができますか? Web で見つけたいくつかの例は、私のように設定されているようです。

以下は、私のマークアップの短縮版です。

<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();
}

---------------編集--------------------------------- これが私の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

1

GridView のバインドに問題があります。毎回バインドすると、イベントが消去されます。

このバインディングの動作を採用する必要があります

if(! IsPostBack)
{
  Bind();
}

そしてEnableViewState=true、グリッドビューを永続化するために使用します

于 2012-08-07T19:06:07.253 に答える