我有一个网格视图,其显示结果集如下
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
我有两个下拉列表,分别是
monthdropdown1和Quarterdropdown2
如果用户选择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
并且分别与季度相同
我只需要将选定的dropdowntext添加到网格视图标题列
注意:这里我的网格列属性是autogeneratedcolumn = true
请为我找到解决方案,无论是我们可以将选定的文本添加到gridview列标题中,还是可以为选定的文本添加saperate标题列
我已经尝试过使用此代码Rowdatabound event
,但不适用于我
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
<asp:GridView ID="DataGrid1" Style="visibility: visible" runat="server" AlternatingRowStyle-BackColor="#E9EDF5"
Font-Names="Arial" ForeColor="#09538A" Font-Size="12px" BackColor="#ffffff" BorderColor="DarkGray"
Font-Bold="true" HeaderStyle-BackColor="#298DC7" EnableViewState="false" CellSpacing="20"
CellPadding="10" ShowFooter="false" HeaderStyle-Font-Bold="true" AutoGenerateColumns="True" OnRowDataBound="DataGrid1__RowDataBound">
<RowStyle HorizontalAlign="Right" Height="20px"/>
<alternatingrowstyle Height="20px" BackColor="#E9EDF5"/>
<%-- OnRowCommand="DataGrid1__RowCommand" OnRowDataBound="DataGrid1__RowDataBound">--%>
<HeaderStyle Font-Names="Arial;" CssClass="MyHeaderStyle" Font-Size="13px" ForeColor="White"
Font-Bold="True" Height="20" BackColor="#298DC7"></HeaderStyle>
<AlternatingRowStyle BackColor="#E9EDF5" />
</asp:GridView>
请点击此链接,希望对您有所帮助。
如果您仍然遇到问题,请告诉我,我将为您创建一个示例。
在您的代码中:
HTML:
<form id="form1" runat="server">
<div>
<asp:GridView ID="DataGrid1" Style="visibility: visible" runat="server" AlternatingRowStyle-BackColor="#E9EDF5"
Font-Names="Arial" ForeColor="#09538A" Font-Size="12px" BackColor="#ffffff" BorderColor="DarkGray"
Font-Bold="true" HeaderStyle-BackColor="#298DC7" EnableViewState="false" CellSpacing="20"
CellPadding="10" ShowFooter="false" HeaderStyle-Font-Bold="true" AutoGenerateColumns="True">
<RowStyle HorizontalAlign="Right" Height="20px" />
<AlternatingRowStyle Height="20px" BackColor="#E9EDF5" />
<%-- OnRowCommand="DataGrid1__RowCommand" OnRowDataBound="DataGrid1__RowDataBound">--%>
<HeaderStyle Font-Names="Arial;" CssClass="MyHeaderStyle" Font-Size="13px" ForeColor="White"
Font-Bold="True" Height="20" BackColor="#298DC7"></HeaderStyle>
<AlternatingRowStyle BackColor="#E9EDF5" />
</asp:GridView>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="Jan" Value="0"></asp:ListItem>
<asp:ListItem Text="Feb" Value="1"></asp:ListItem>
<asp:ListItem Text="Mar" Value="2"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged">
<asp:ListItem Text="Quater1" Value="0"></asp:ListItem>
<asp:ListItem Text="Quater2" Value="1"></asp:ListItem>
<asp:ListItem Text="Quater3" Value="2"></asp:ListItem>
</asp:DropDownList>
</div>
</form>
。CS:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<employee> obj = new List<employee>() {
new employee(1, "Sunny1"),
new employee(2, "Sunny2"),
new employee(3, "Sunny3"),
new employee(4, "Sunny4"),
new employee(5, "Sunny5"),
new employee(6, "Sunny6"),
new employee(7, "Anny7")};
DataGrid1.DataSource = obj;
DataGrid1.DataBind();
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
Changetext();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Changetext();
}
private void Changetext()
{
string str = DropDownList1.SelectedItem.ToString() + " ";
str += DropDownList2.SelectedItem.ToString();
if (DataGrid1.Rows.Count > 0)
{
for (int i = 0; i < DataGrid1.HeaderRow.Cells.Count; i++)
{
DataGrid1.HeaderRow.Cells[i].Text = DataGrid1.HeaderRow.Cells[i].Text + " " + str; //selectedvalue / text;
}
}
}
}
模态类:
public class employee
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public employee(int id, string _name)
{
ID = id;
Name = _name;
Date = DateTime.Now;
}
public employee()
{
}
}
使用此代码,让我知道。与您的HTML,这工作正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句