C# 更改数据源后从GridView获取数据
我试图将gridview的列名添加到下拉列表中。 问题是,当我更改gridview的数据源时,它返回空 我不确定该活动是否正常工作,因为有/没有它它都不起作用。 我想使用DataBindComplete事件,但我看不到它,所以我尝试使用DataBindC# 更改数据源后从GridView获取数据,c#,asp.net,sql-server,gridview,webforms,C#,Asp.net,Sql Server,Gridview,Webforms,我试图将gridview的列名添加到下拉列表中。 问题是,当我更改gridview的数据源时,它返回空 我不确定该活动是否正常工作,因为有/没有它它都不起作用。 我想使用DataBindComplete事件,但我看不到它,所以我尝试使用DataBind private void BindTable() { if (ddTableSearch.SelectedIndex == 0) { tblCustomerTableAdapter
private void BindTable()
{
if (ddTableSearch.SelectedIndex == 0)
{
tblCustomerTableAdapter customerAdapter = new tblCustomerTableAdapter();
GridView2.DataSource = customerAdapter.GetData();
GridView2.DataBind();
}
else if (ddTableSearch.SelectedIndex == 1)
{
tblInvoiceTableAdapter invoiceAdapter = new tblInvoiceTableAdapter();
GridView2.DataSource = invoiceAdapter.GetData();
GridView2.DataBind();
}
else if (ddTableSearch.SelectedIndex == 2)
{
tblEstimateTableAdapter estimateAdapter = new tblEstimateTableAdapter();
GridView2.DataSource = estimateAdapter.GetData();
GridView2.DataBind();
}
}
protected void GridView2_DataBound(object sender, EventArgs e)
{
// Populate dropdown with column names
ddColumnSearch.Items.Clear();
for (int i = 0; i < GridView2.Columns.Count; i++)
{
ddColumnSearch.Items.Add(new ListItem(GridView2.Columns[i].ToString()));
}
}
private void BindTable()
{
if(ddTableSearch.SelectedIndex==0)
{
tblCustomerTableAdapter customerAdapter=新tblCustomerTableAdapter();
GridView2.DataSource=customerAdapter.GetData();
GridView2.DataBind();
}
else if(ddTableSearch.SelectedIndex==1)
{
tblInvoiceTableAdapter invoiceAdapter=新tblInvoiceTableAdapter();
GridView2.DataSource=invoiceAdapter.GetData();
GridView2.DataBind();
}
else if(ddTableSearch.SelectedIndex==2)
{
tblEstimateTableAdapter estimateAdapter=新tblEstimateTableAdapter();
GridView2.DataSource=estimateAdapter.GetData();
GridView2.DataBind();
}
}
受保护的void GridView2_数据绑定(对象发送方、事件参数e)
{
//用列名填充下拉列表
ddColumnSearch.Items.Clear();
对于(int i=0;i
我做错了什么?gridview中的每条记录都会运行数据绑定事件。因此,一个问题是,每次您清除之前添加的项目时。另一个问题是,您需要从EventArgs而不是gridview.columns获取数据,因为在绑定所有数据之前,这些列都不存在。我认为您需要做的就是从标题行获取数据:
protected void GridView2_DataBound(object sender, EventArgs e)
{
// Populate dropdown with column names
if(e.Row.RowType != DataControlRowType.Header) return; //only continue if this is hdr row
ddColumnSearch.Items.Clear();
foreach (TableCell cell in e.Row.Cells)
{
ddColumnSearch.Items.Add(new ListItem(cell.Text));
}
}