C# 如何在编辑(图像按钮)单击时在 GridView 的 EditItemTemplate 中绑定 ASP.Net DropDownList 控件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18656733/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to bind ASP.Net DropDownList control in EditItemTemplate of GridView on edit(imagebutton)click
提问by Silver
I have requirement to bind ASP.Net DropDownList control in EditItemTemplate of GridView. I have a edit imagebutton with commandname="Edit"also dropdown needs to be binded from different table(directory) and not the table through which grid is binded(details).
我需要在 GridView 的 EditItemTemplate 中绑定 ASP.Net DropDownList 控件。我有一个带有 commandname="Edit" 的编辑图像按钮,还需要从不同的表(目录)绑定下拉列表,而不是绑定网格的表(详细信息)。
if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit && GridView1.EditIndex == e.Row.RowIndex)
{
DropDownList DStatusEdit = (DropDownList)e.Row.FindControl("DStatusEdit");
string query = "select distinct status from directory";
SqlCommand cmd = new SqlCommand(query);
DStatusEdit.DataSource = GetData(cmd);
DStatusEdit.DataTextField = "status";
DStatusEdit.DataValueField = "status"; DStatusEdit.DataBind();
DataStatusEdit.DataBind();
}
the page is running but when i click edit image button the dropdwn shows but no data in dropdown binded it is empty. My gridview is inside update panel. How can i achieve this? Should dropdownlist in my case be binded inside rowcommand but how?
该页面正在运行,但是当我单击编辑图像按钮时,dropdwn 显示但下拉列表中没有绑定数据,它是空的。我的 gridview 在更新面板内。我怎样才能做到这一点?在我的情况下,下拉列表应该绑定在 rowcommand 内,但如何绑定?
采纳答案by Satinder singh
Code:Try this
代码:试试这个
protected void gv_RowDataBound(object sender, GridViewEditEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
DropDownList ddList= (DropDownList)e.Row.FindControl("DStatusEdit");
//bind dropdownlist
DataTable dt = con.GetData("select distinct status from directory");
ddList.DataSource = dt;
ddList.DataTextField = "YourCOLName";
ddList.DataValueField = "YourCOLName";
ddList.DataBind();
DataRowView dr = e.Row.DataItem as DataRowView;
//ddList.SelectedItem.Text = dr["YourCOLName"].ToString();
ddList.SelectedValue = dr["YourCOLName"].ToString();
}
}
}
Have already answer similar question Binding dropdownlist inside gridview edititemtemplate
已经回答了类似问题Binding dropdownlist inside gridview edititemtemplate
View Blog Article : How to bind drop-down list inside gridview edit template
查看博客文章:如何在gridview编辑模板中绑定下拉列表
回答by Sasidharan
protected void gv_RowDataBound(object sender, GridViewEditEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
DropDownList DStatusEdit= (DropDownList)e.Row.FindControl("DStatusEdit");
DataTable dt = con.GetData("select distinct status from directory");
DStatusEdit.DataSource = dt;
DStatusEdit.DataTextField = "status";
DStatusEdit.DataValueField = "status";
DStatusEdit.DataBind();
DataRowView dr = e.Row.DataItem as DataRowView;
DStatusEdit.SelectedValue = dr["columnname"].ToString();
}
}
}
}
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
gridviewBind();// your gridview binding function
}
回答by Sasidharan
Your forgot to bind the dropdown list
你忘了绑定下拉列表
DStatusEdit.DataBind();
回答by arun
I think this is helpful
我认为这很有帮助
private void bind_gridview_with_dropdownlist()
{
DataSet ds = edtcoursedal.Loaddropdown();
foreach (GridViewRow grdRow in GridView1.Rows)
{
DropDownList bind_dropdownlist = (DropDownList)(GridView1.FooterRow.Cells[3].FindControl("drplmaincourse"));
bind_dropdownlist.DataSource = ds;
bind_dropdownlist.DataTextField = "C_name";
bind_dropdownlist.DataValueField = "MId";
bind_dropdownlist.DataBind();
}
bind_dropdownlist.Items.Insert(0,new ListItem("Select","0"));
}
回答by Tech knowledge
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) {
受保护的无效 GridView2_RowDataBound(对象发送者,GridViewRowEventArgs e){
using (SqlConnection con = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("SELECT GatePassNo,PurposeOfVisit FROM VisitorList"))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
DropDownList ddlpurposeofvisit = (DropDownList)e.Row.FindControl("ddlpurposeofvisit");
ddlpurposeofvisit.DataSource = cmd.ExecuteReader();
ddlpurposeofvisit.DataTextField = "PurposeOfVisit";
ddlpurposeofvisit.DataValueField = "GatePassNo";
ddlpurposeofvisit.DataBind();
con.Close();
}
}
}