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;
}
}
}