C# 将下拉选择项文本添加到gridview中的特定列

C# 将下拉选择项文本添加到gridview中的特定列,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个显示结果集的网格视图,如下所示 customer |2011 shipped qty|2011 sales price|2012 shipped qty|2012 sales price aa 1 2.00 2 5.50 cc 2 3.00 4

我有一个显示结果集的网格视图,如下所示

customer |2011 shipped qty|2011 sales price|2012 shipped qty|2012 sales price

    aa        1                     2.00              2                    5.50
    cc        2                     3.00              4                   6.25
我有两个下拉列表 月度下降1和季度下降2

如果用户选择monthdropdown1作为jan,则在网格结果中应显示为

customer|2011 shipped qty|2011 sales price| 2012 shipped qty| 2012 sales price|
          jan                 jan                 jan            jan

   aa     1                     2.00              2                    5.50
   cc     2                     3.00              4                   6.25
和第四季度的数据相同

我只需要将选定的下拉文本添加到网格视图标题列中

注意:这里我的网格列属性是autogeneratedcolumn=true

请为我找到是否可以将所选文本添加到gridview列标题或是否可以为所选文本添加saperate列标题的解决方案

我曾在Rowdatabound事件中尝试使用此代码,但不适用于我

if (e.Row.RowType == DataControlRowType.Header)
{
    GridViewRow HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);
    TableCell HeaderCell2 = new TableCell();
    HeaderCell2.Text = (DropDownList1.SelectedItem.Text);
    HeaderCell2.ColumnSpan = 0;
    HeaderRow.Cells.Add(HeaderCell2);
    DataGrid1.Controls[0].Controls.AddAt(0, HeaderRow);
}
如果可能的话,请给我其他的解决方案

HTML


请遵循此链接,希望这将帮助您

如果你仍然面临这个问题,那么请让我知道我会为你创建一个样本

在代码中:

HTML:


使用此代码并让我知道。对于您的html,这很正常。

假设您的下拉列表如下所示:-

<asp:DropDownList ID="ddlMonth" runat="server" AutoPostBack="true" 
    OnSelectedIndexChanged="ddlMonth_SelectedIndexChanged" >
     <asp:ListItem Selected="True" Text="Select" Value="-1"></asp:ListItem>
     <asp:ListItem Text="January" Value="1"></asp:ListItem>
     <asp:ListItem Text="February" Value="2"></asp:ListItem>
</asp:DropDownList>
protected void ddlMonth_SelectedIndexChanged(object sender, EventArgs e)
{
    if(ddlMonth.SelectedValue != "-1")
    {
        for (int i = 1; i < DataGrid1.HeaderRow.Cells.Count; i++)
        {
            DataGrid1.HeaderRow.Cells[i].Text += "  " + ddlMonth.SelectedItem.Text;
        }
    }
}
您可以如下操作gridview标头:-

<asp:DropDownList ID="ddlMonth" runat="server" AutoPostBack="true" 
    OnSelectedIndexChanged="ddlMonth_SelectedIndexChanged" >
     <asp:ListItem Selected="True" Text="Select" Value="-1"></asp:ListItem>
     <asp:ListItem Text="January" Value="1"></asp:ListItem>
     <asp:ListItem Text="February" Value="2"></asp:ListItem>
</asp:DropDownList>
protected void ddlMonth_SelectedIndexChanged(object sender, EventArgs e)
{
    if(ddlMonth.SelectedValue != "-1")
    {
        for (int i = 1; i < DataGrid1.HeaderRow.Cells.Count; i++)
        {
            DataGrid1.HeaderRow.Cells[i].Text += "  " + ddlMonth.SelectedItem.Text;
        }
    }
}
四分之一的降幅也是如此。如果必须更改头文本,请考虑使用StrugBuudi.

更新:


改用for循环。我从1开始循环,因为我想跳过第一列。因此,您可以操纵循环。

感谢您的回复,我将仔细查看并让您知道。我在您提供的链接中未找到任何有用的内容。如果您想在运行时更改列文本,则必须遵循此操作。根据你的问题。在我这方面,它工作得很好。我不想更改标题栏的全文,我只需要添加所选文本的内容,还要记住,我的网格有自动生成的列。OK,请显示有问题的gridview的HTML。因此,我可以在我的端创建相同的场景。我是否将列作为自动生成的列。列可能会增加10个以上。这是否适用于您的代码?有时我的列可能会减少,有时我的列可能会增加
<asp:DropDownList ID="ddlMonth" runat="server" AutoPostBack="true" 
    OnSelectedIndexChanged="ddlMonth_SelectedIndexChanged" >
     <asp:ListItem Selected="True" Text="Select" Value="-1"></asp:ListItem>
     <asp:ListItem Text="January" Value="1"></asp:ListItem>
     <asp:ListItem Text="February" Value="2"></asp:ListItem>
</asp:DropDownList>
protected void ddlMonth_SelectedIndexChanged(object sender, EventArgs e)
{
    if(ddlMonth.SelectedValue != "-1")
    {
        for (int i = 1; i < DataGrid1.HeaderRow.Cells.Count; i++)
        {
            DataGrid1.HeaderRow.Cells[i].Text += "  " + ddlMonth.SelectedItem.Text;
        }
    }
}