2012-11-12 24 views
1

如何解决?GridView。我需要按“编辑”链接2次才能开始更新

我在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); 
+2

恐怕还需要更多的尝试来解决这个问题。你可以发布一些代码吗? –

回答

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 
}  

如果您不想手动执行此操作,则需要使用数据源控件。

+0

我在Page_Load,Page_PreRender和**标记**中声明了处理程序。我做到了 –

+0

你的标记只显示了OnRowDeleting =“dataViewRowDeleting”和AutoGenerateDeleteButton =“True”。只需将其余部分添加到标记中,就像我已经完成的那样,将它们从Page_Load和Page_PreRender中删除,然后查看是否存在相同的问题。如果你是那么你将需要显示更多的代码。 – MVCKarl

+0

你必须相信我。我做的。这是我第一次做的。现在我再试一次。 –

相关问题