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 回答