많은 검색과 테스트가 끝나면 의견을 구할 때입니다.
의 GridView EditItemTemplate에서 파일 업로드와 업데이트 패널 내부 : 그런 다음gridview 행 편집 RegisterPostBackControl
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" OnRowUpdating="GridView1_RowUpdating"
OnRowDataBound="GridView1_RowDataBound" OnRowEditing="GridView1_RowEditing"
OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="GridView1_RowCommand" >
<Columns>
<asp:CommandField ShowEditButton="True" ShowDeleteButton="true" >
</asp:CommandField>
<asp:TemplateField HeaderText="Attachment" SortExpression="FileName">
<EditItemTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" /><br />
<asp:Button ID="btnAddAttachment" runat="server" Text="Upload File" CommandName="AddAttachment"
CommandArgument='<%# Bind("ID") %>' />
</EditItemTemplate>
<ItemTemplate>
<a id="ancLink" runat="server" href='<%# "~/Files/" + (DataBinder.Eval(Container.DataItem,"FileName")) %>'
target="_blank">
<asp:Label ID="lblAnchor" runat="server"></asp:Label></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
EditItemTemplate에서 단추를 들면, RegisterPostBackControl 추가
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState == DataControlRowState.Edit) || ((e.Row.RowState & DataControlRowState.Edit) > 0))
{
Button btnAddAttachment = (Button)e.Row.FindControl("btnAddAttachment");
AjaxControlToolkit.ToolkitScriptManager ToolkitScriptManager1 = (AjaxControlToolkit.ToolkitScriptManager)Master.FindControl("ToolkitScriptManager1");
ToolkitScriptManager1.RegisterPostBackControl(btnAddAttachment);
}
}
}
문제가를 그 RegisterPostBackControl은하지 않습니다 파일 업로드를 처음 시도 할 때 사용자가 동일한 행을 다시 편집하면 두 번째 시도가 올바르게 작동합니다.
RegisterPostBackControl이 두 번째 게시물에 적용되기 때문에 가능성이 큽니다.
버튼에 처음으로 전체 포스트 백이있는 방법이 있습니까?
나는 주위에 작업하는 쉬운 방법이 알고 있지만 이것은 UpdatePanel의 목적을 패배 :
<Triggers>
<asp:PostBackTrigger ControlID="GridView1" />
</Triggers>
만 이후
관리자 편집에 접근, 뒤에있는 코드에서 그리드의 PostBackTrigger 설정을해야합니다 또한 관리자 만 사용할 수있는 옵션이지만 다시 한 번 업데이트 패널의 목적을 무효화합니다.
모든 의견을 환영합니다. 당신은 지금 뭔가를 밀어해야하는 경우
ChildrenAsTriggers="true"
그것은 임시 해결 방법으로 작업 할 수 있습니다
'RowDataBound'는'DataSource'를'GridView'에 바인드 할 때 트리거됩니다. 모든 포스트 백에서 'RegisterPostBackControl'을 호출합니다. 그러므로'RowCreated'를 대신 사용하십시오. –
이렇게하면 많은 컨트롤을 트리거로 바인딩해야합니다. 그렇게 추한 것 같아. GridView의 OnRowCommand = "GridView1_RowCommand"이벤트를 설정하는 것이 좋습니다. 한편,'commandname'을 버튼에 설정하십시오 ('CommandName = "upload"'). 그런 다음 GridView Command 이벤트를 트리거로 설정하기 만하면됩니다. 또한 서버 측에서는 rowcommand 이벤트에서 어떤 작업을 수행 할 수 있으며 어떤 fileupload 컨트롤이 포스트 백을 트리거하는지 알 수 있습니다. – Avijit
@Tim - RowCreated 이벤트에 추가하는 기능이 작동하지 않습니다. @ Avijit - RowCommand에 추가하는 기능이 작동하지 않습니다. 그러나 제안에 감사드립니다. –