1

修正方法は?

Page_Load、Page_PreRender、およびマークアップでハンドラーを宣言しました。正常に動作しません。

コード:

<asp:GridView ID="tableResults" runat="server" DataMember="Table" EnableModelValidation="True"
    CssClass="GridViewStyle" OnRowDeleting="dataViewRowDeleting" AutoGenerateDeleteButton="True">
    <HeaderStyle CssClass="GridViewHeaderStyle" />
    <RowStyle CssClass="GridViewRowStyle" />
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1" runat="server" Text="Скачать объект" NavigateUrl='<%#"objects/" + Eval("Идентификатор") %>'></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

ハンドラー:

tableResults.AutoGenerateEditButton = true;
tableResults.RowEditing += new GridViewEditEventHandler(tableResults_RowEditing);
tableResults.RowUpdating += new GridViewUpdateEventHandler(tableResults_RowUpdating);
tableResults.RowCancelingEdit += new GridViewCancelEditEventHandler(tableResults_RowCancelingEdit);
4

1 に答える 1

1

あなたのコードを試してみましたが、あなたと同じ問題が発生しました。その理由は、Page_Load で手動で Databind を呼び出しているが、データソースを再アタッチしていないためです。編集イベント ハンドラー (および他のイベント ハンドラー) でデータソースを再アタッチする必要があります。

protected void tableResults_RowEditing(object sender, GridViewEditEventArgs e)
{
    tableResults.EditIndex = e.NewEditIndex;
    PopulateTableResults();   // In this method I attach the datasource and bind
}    

手動で行いたくない場合は、データ ソース コントロールを使用する必要があります。

于 2012-11-12T04:40:11.430 に答える