C# 回发后访问gridview行

C# 回发后访问gridview行,c#,asp.net,gridview,templatefield,C#,Asp.net,Gridview,Templatefield,你好 我需要动态上传文件并在gridview中显示信息。 文件上传后,我需要在下拉列表中选择文件类型。 但回发后,我无法访问Gridview1行,无法获取选定的文件类型。回发后Gridview1.Rows.Count=0 是否可以从下拉列表中获取选定的值 <asp:GridView ID="GridView1" runat="server" ShowHeader="False" AutoGenerateColumns="false"> <Columns> <asp

你好

我需要动态上传文件并在gridview中显示信息。 文件上传后,我需要在下拉列表中选择文件类型。 但回发后,我无法访问Gridview1行,无法获取选定的文件类型。回发后Gridview1.Rows.Count=0

是否可以从下拉列表中获取选定的值

<asp:GridView ID="GridView1"  runat="server" ShowHeader="False" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="FileName" />
<asp:TemplateField HeaderText="FileType">
<ItemTemplate>
<asp:DropDownList runat="server">
<asp:ListItem Value="Val1">Val1</asp:ListItem>
<asp:ListItem Value="Val2">Val2</asp:ListItem>
<asp:ListItem Value="Val3">Val3</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField DeleteText="Remove" ShowDeleteButton="true" />
</Columns>
</asp:GridView>

<asp:FileUpload ID="FileUpload" runat="server" onchange="this.form.submit()" />

尝试这样更改iPostBack

   if (!IsPostBack && FileUpload.HasFile)
   {
     AddRow(FileUpload.PostedFile.FileName);
   }
(或)


因此,如果发生页面加载,您的if条件将变为true。

您可以找到下拉列表,并使用gridview的RowDataBOund事件中的值进行更新,如下所示

protected void Page_Load(object sender, EventArgs e)
{
    //RestoreForm();

    if (IsPostBack && FileUpload.HasFile)
    {
        AddRow(FileUpload.PostedFile.FileName);
    }
    else
    {
        AddDataTableToSession();
    }

    FilesGridView.RowDeleting += new GridViewDeleteEventHandler(RemoveFileFromTable);
    FilesGridView.RowDataBound += KBFilesGridView_RowDataBound;

}
    void KBFilesGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList;
            if (ddl != null)
            {
                DataRow dr= ((DataRowView)e.Row.DataItem).Row;
                ddl.SelectedValue = dr["FileType"].ToString();
            }
    }
private void RemoveFileFromTable(object sender, GridViewDeleteEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
   {
      DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList;
      if (ddl != null)
      {              
          if(ddl.SelectedValue == "someValue") doSomeThing();
      }
   }
 }
和行数据绑定将如下所示

protected void Page_Load(object sender, EventArgs e)
{
    //RestoreForm();

    if (IsPostBack && FileUpload.HasFile)
    {
        AddRow(FileUpload.PostedFile.FileName);
    }
    else
    {
        AddDataTableToSession();
    }

    FilesGridView.RowDeleting += new GridViewDeleteEventHandler(RemoveFileFromTable);
    FilesGridView.RowDataBound += KBFilesGridView_RowDataBound;

}
    void KBFilesGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList;
            if (ddl != null)
            {
                DataRow dr= ((DataRowView)e.Row.DataItem).Row;
                ddl.SelectedValue = dr["FileType"].ToString();
            }
    }
private void RemoveFileFromTable(object sender, GridViewDeleteEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
   {
      DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList;
      if (ddl != null)
      {              
          if(ddl.SelectedValue == "someValue") doSomeThing();
      }
   }
 }
类似地,您可以获得remove方法的dropdown值,如下所示

protected void Page_Load(object sender, EventArgs e)
{
    //RestoreForm();

    if (IsPostBack && FileUpload.HasFile)
    {
        AddRow(FileUpload.PostedFile.FileName);
    }
    else
    {
        AddDataTableToSession();
    }

    FilesGridView.RowDeleting += new GridViewDeleteEventHandler(RemoveFileFromTable);
    FilesGridView.RowDataBound += KBFilesGridView_RowDataBound;

}
    void KBFilesGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList;
            if (ddl != null)
            {
                DataRow dr= ((DataRowView)e.Row.DataItem).Row;
                ddl.SelectedValue = dr["FileType"].ToString();
            }
    }
private void RemoveFileFromTable(object sender, GridViewDeleteEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
   {
      DropDownList ddl = e.Row.FindControl("DropDownList1") as DropDownList;
      if (ddl != null)
      {              
          if(ddl.SelectedValue == "someValue") doSomeThing();
      }
   }
 }

您正在用什么填充GridView?可以显示填充行的代码吗?KBFileGridView和FileGridView之间有什么区别?没有区别。只是文本中的错误谢谢,但我如何在回发后获取下拉列表的选定值?是的。RemoveFileFromTable上的GridView中没有行。