0

に使いたいのですが、UpdatePanelトリガーを追加してもインが動作しません... 見つからないので、解決策はありますか?GridViewFileUploadGridViewFileUpload Button

<asp:TemplateField HeaderText="Upload Kundli">
  <ItemTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" /><br />
    <asp:Button ID="btnupload" runat="server" Text="Upload" OnClick="btnupload_Click" />
  </ItemTemplate>
  <ItemStyle HorizontalAlign="Center" />
  <HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>

</Columns>

</asp:GridView>

</ContentTemplate>
<Triggers>
  <asp:PostBackTrigger ControlID="btnupload" />
</Triggers>
</asp:UpdatePanel>
4

2 に答える 2

3

これは、コードビハインドを介して行う方法です。アイデアを提供するためのダミーのモックアップです。

ASPX コード:

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">        
    </asp:ScriptManager>  

<asp:UpdatePanel runat="server">
<ContentTemplate>
    <asp:Label runat="server" ID="Label1" Text=""></asp:Label>    
<asp:GridView runat="server" ID="GridView1" OnRowDataBound="GridView1_RowDataBound">
    <Columns>
    <asp:TemplateField HeaderText="Upload Kundli">
                                <ItemTemplate>
                                    <asp:FileUpload ID="FileUpload1" runat="server" /><br />
                                    <asp:Button ID="btnupload" runat="server" Text="Upload"       OnClick="btnupload_Click" />
                                </ItemTemplate>
                                 <ItemStyle HorizontalAlign="Center" />
                                <HeaderStyle HorizontalAlign="Center" />
                            </asp:TemplateField>

          </Columns>

    </asp:GridView>

    </ContentTemplate>

        </asp:UpdatePanel>
        </form>

コード ビハインド (ASPX.CS):

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List<int> gridItems = new List<int>();
                gridItems.Add(1);
                gridItems.Add(2);
                GridView1.DataSource = gridItems;
                GridView1.DataBind();
            }
        }

        protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
        {
            //May not need this if. So check depending on what and how you are binding.
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                Button UploadButon = (Button) e.Row.Cells[0].FindControl("btnupload");
                if(UploadButon != null)
                {
                    if (this.ScriptManager1 != null)
                    {
                        this.ScriptManager1.
                            RegisterAsyncPostBackControl(UploadButon);
                    }
                }

            }

        }
        protected void btnupload_Click(object sender, EventArgs e)
        {
            Label1.Text = Label1.Text + "a";
        }
于 2012-06-14T05:47:43.887 に答える
1

FileUpload が機能するには、完全なポストバックが必要です。

  • GridView を UpdatePanel 内に配置してみてください。
  • グリッドビューの OnRowCommand="GridView1_RowCommand" イベントを設定
  • コマンド名をボタン CommandName="upload" に設定します

     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="conditional">
       <Triggers>
         <asp:PostBackTrigger ControlID="btnupload" />
       </Triggers>
       <ContentTemplate>
          <asp:GridView ID="GridView1" Runat="server" OnRowCommand="GridView1_RowCommand">
          <Columns>
            <asp:TemplateField HeaderText="Upload Kundli">
             <ItemTemplate>
                <asp:FileUpload ID="FileUpload1" runat="server" /><br />
                <asp:Button ID="btnupload" runat="server" Text="Upload" CommandName="upload" />
             </ItemTemplate>
           </asp:TemplateField>
      </Columns>
    

rowcommand イベント経由でも Button を取得できるようになりました。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "upload")
    {
       //your stuff
    }
}
于 2012-06-14T05:54:43.150 に答える