我知道這個問題已被問過,但我已經嘗試過這些帖子中的解決方案,沒有任何工作。輸入不保存在Gridview行更新事件
我有一個從一個XML文件填充,並且是爲了更新一個XML文件。由於此gridview所在頁面的用途,數據綁定發生在page_load事件上。另外,我使用TemplateFields來控制gridview的佈局。
這是我的代碼。首先,在GridView:
<asp:GridView ID="fileGrid" runat="server" EnableViewState="true" AutoGenerateColumns="False" Width="315px" BorderStyle="None"
OnRowDeleting="fileGrid_RowDeleting" OnRowEditing="fileGrid_RowEditing"
OnRowCancelingEdit="fileGrid_RowCancelingEdit" OnRowUpdating="fileGrid_RowUpdating"
OnRowDataBound="fileGrid_RowDataBound">
<Columns>
<asp:BoundField DataField="name" HeaderText="Uploaded Files" SortExpression="name" ReadOnly="true">
<ItemStyle CssClass="fileName" />
</asp:BoundField>
<asp:TemplateField HeaderText="Description">
<ItemStyle CssClass="desc-cell" />
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("desc") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="descTb" runat="server" Text='<%# Bind("desc") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle CssClass="cmdCell" />
<ItemTemplate>
<asp:LinkButton ID="lnkEdit" runat="server" CommandName="Edit">Edit</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="lnkUpdate" runat="server" CommandName="Update">Update</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemStyle CssClass="cmdCell" />
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" runat="server" CommandName="Delete">Delete</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel">Cancel</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
而且我OnRowUpdating功能。這是問題發生的地方:
protected void fileGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int eRow = e.RowIndex;
GridViewRow row = fileGrid.Rows[eRow];
string name = row.Cells[0].Text;
string desc = ((TextBox)(row.Cells[1].FindControl("descTb"))).Text;
// Update XML via Linq-to-XML here
}
但是,我無法捕獲任何輸入到descTb文本框中的值; 「desc」總是返回null。我知道page_load在RowUpdating之前觸發,但我無法在PostBack檢查中包裝填充GridView的代碼,因爲那時我的gridview空白(並且我仍然沒有得到那個血腥的文本框值)。會話內存中初始的,預編輯的網格視圖數據並在RowUpdating事件中更新該數據不起作用。將文本框控件上的EnableViewState設置爲「true」,並刪除文本屬性中的<%#Bind()%>不起作用。
有沒有人有任何想法?
我知道,我只是想保持我的代碼儘可能簡短。無論如何,更改這並不能解決我的問題。 –
請參閱我已更新我的答案。 – AsifAli72090