이 질문은 이전에 물어 보았지만 그 게시물에서 솔루션을 시도했지만 아무 것도 작동하지 않습니다.입력이 Gridview 행 업데이트 이벤트에 저장되지 않습니다.
XML 파일을 채우고 업데이트하는 데 필요한 gridview가 있습니다. 이 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로 돌아옵니다. RowUpdating 전에 page_load 발생합니다 알고 있지만 내 gridview 빈 다시 온다 때문에 PostBack 체크 내 gridview 채우는 코드를 래핑 할 수 없습니다. 그리고 여전히 그 피 묻은 텍스트 값을 가져 오지 않습니다. 초기, 그리드보기 데이터를 세션 메모리에 미리 편집하고 RowUpdating 이벤트에서 업데이트하는 것은 작동하지 않습니다. TextView 컨트롤에서 EnableViewState를 "true"로 설정하고 텍스트 속성에서 < % Bind() %>를 제거하면 작동하지 않습니다.
누구에게 아이디어가 있습니까?
저는 가능한 한 간단한 코드를 작성하고 싶습니다. 어떤 경우이든 변경하면 문제가 해결되지 않습니다. –
내 대답을 업데이트했습니다. – AsifAli72090