如何在gridview中填写下拉列表 [英] How do I fill dropdownlist in gridview

查看:88
本文介绍了如何在gridview中填写下拉列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在GridView中填充DropDownList



我尝试过:



i有这个类来调用StoredProcedure:



公共类DropDownList_DataAccessLayer

{

public static void DDL(DropDownList DDl,string ProcedureName,SqlParameter SPParameter,string DDLText,string DDLValue,string TXT)

{

string CS = ConfigurationManager.ConnectionStrings [DBCS] .ConnectionString;

使用(SqlConnection CON = new SqlConnection(CS))

{

SqlCommand CMD = new SqlCommand();

CMD = CON.CreateCommand();

CMD.CommandType = CommandType.StoredProcedure;



if(SPParameter!= null)

{

CMD.Parameters.Add(SPParameter);

}



CMD.Connection = CON;

CMD.CommandText = ProcedureName;

CON.Open();

SqlDataReader RD = CMD.ExecuteReader();



DDl.DataSource = RD;

DDl.DataTextField = DDLText ;

DDl.DataValueField = DDLValue;



DDl.DataBind();



ListItem li = new ListItem(Please Select+ TXT, - 1);

DDl.Items.Insert(0,li);

RD .Close();

CON.Close();

}

}

}
Pageloade


我有这个:



protected void Page_Load(object sender,EventArgs e)

{

if(!IsPostBack)

{

BindGridViewData();

}

}



private void BindGridViewData( )

{

int CenterCode = Convert.ToInt32(Request.QueryString [Center_Code]);

GridView1.DataSource = ProjectDataAccessLayer.GetAllProjects (CenterCode);

GridView1.DataBind();

}


GridView1_RowDataBound中的
我有:



protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)

{

DropDownList ActiveCenterDDL =(DropDownList)e。 Row.FindControl(ddlEditCenters);

DropDownList NewActiveCenterDDL =(DropDownList)e.Row.FindControl(ddlNewCenters);



DropDownList_DataAccessLayer.DDL(ActiveCenterDDL,Get_ActiveCenters,null,CenterName,CenterCode,Center); // for

DropDownList_DataAccessLayer.DDL(NewActiveCenterDDL,Get_ActiveCenters,null,CenterName,CenterCode,Center);


$ b aspx中的$ b我有这个:



< asp:TemplateField HeaderText =CentersSortExpression =Center_Name>



< itemtemplate>

< asp:标签ID =lblCenterNamerunat =serverText ='<%#Bind(Center_Name)%> '>





< edititemtemplate>

< asp:DropDownList ID =ddlEditCentersCssClass =gveditrunat =serverValidationGroup =EditRow>

< asp:RequiredFieldValidator CssClass =ValidatorID =ddlEditCentersValidatorrunat =serverControlToValidate =ddlEditCentersErrorMessage =你没有选择中心InitialValue = - 1ValidationGroup =Edit> *





< footertemplate>

< asp:DropDownList ID =ddlNewCentersCssClass =gvfooterrunat =server>

i'm trying to fill DropDownList in GridView

What I have tried:

i have this class to call StoredProcedure :

public class DropDownList_DataAccessLayer
{
public static void DDL(DropDownList DDl, string ProcedureName, SqlParameter SPParameter, string DDLText, string DDLValue, string TXT)
{
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection CON = new SqlConnection(CS))
{
SqlCommand CMD = new SqlCommand();
CMD = CON.CreateCommand();
CMD.CommandType = CommandType.StoredProcedure;

if (SPParameter != null)
{
CMD.Parameters.Add(SPParameter);
}

CMD.Connection = CON;
CMD.CommandText = ProcedureName;
CON.Open();
SqlDataReader RD = CMD.ExecuteReader();

DDl.DataSource = RD;
DDl.DataTextField = DDLText;
DDl.DataValueField = DDLValue;

DDl.DataBind();

ListItem li = new ListItem(" Please Select " + TXT, "-1");
DDl.Items.Insert(0, li);
RD.Close();
CON.Close();
}
}
}

in Pageloade i have this:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridViewData();
}
}

private void BindGridViewData()
{
int CenterCode = Convert.ToInt32(Request.QueryString["Center_Code"]);
GridView1.DataSource = ProjectDataAccessLayer.GetAllProjects(CenterCode);
GridView1.DataBind();
}

in GridView1_RowDataBound i have this :

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DropDownList ActiveCenterDDL = (DropDownList)e.Row.FindControl("ddlEditCenters");
DropDownList NewActiveCenterDDL = (DropDownList)e.Row.FindControl("ddlNewCenters");

DropDownList_DataAccessLayer.DDL(ActiveCenterDDL, "Get_ActiveCenters", null, "CenterName", "CenterCode", "Center"); // for
DropDownList_DataAccessLayer.DDL(NewActiveCenterDDL, "Get_ActiveCenters", null, "CenterName", "CenterCode", "Center");

in aspx i have this :

<asp:TemplateField HeaderText="Centers" SortExpression="Center_Name">

<itemtemplate>
<asp:Label ID="lblCenterName" runat="server" Text='<%# Bind("Center_Name") %>'>


<edititemtemplate>
<asp:DropDownList ID="ddlEditCenters" CssClass="gvedit" runat="server" ValidationGroup="EditRow">
<asp:RequiredFieldValidator CssClass="Validator" ID="ddlEditCentersValidator" runat="server" ControlToValidate="ddlEditCenters" ErrorMessage="you didn't select a center" InitialValue="-1" ValidationGroup="Edit">*


<footertemplate>
<asp:DropDownList ID="ddlNewCenters" CssClass="gvfooter" runat="server">

推荐答案

如下例所示:



Something like below example:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if ((e.Row.RowState & DataControlRowState.Edit) > 0)
        {
            DropDownList ActiveCenterDDL= (DropDownList)e.Row.FindControl("ddlEditCenters");
            //bind dropdown-list
            DataTable dt = con.GetData("Select category_name from category");
            ActiveCenterDDL.DataSource = dt;
            ActiveCenterDDL.DataTextField = "category_name";
            ActiveCenterDDL.DataValueField = "category_name";
            ActiveCenterDDL.DataBind();

DropDownList NewActiveCenterDDL= (DropDownList)e.Row.FindControl("ddlEditCenters");
            //bind dropdown-list
            DataTable dt = con.GetData("Select category_name from category");
            NewActiveCenterDDL.DataSource = dt;
            NewActiveCenterDDL.DataTextField = "category_name";
            NewActiveCenterDDL.DataValueField = "category_name";
            NewActiveCenterDDL.DataBind();

            DataRowView dr = e.Row.DataItem as DataRowView;
            //ddList.SelectedItem.Text = dr["category_name"].ToString();
            ActiveCenterDDL.SelectedValue = dr["category_name"].ToString();
        }
    }
}


如果我理解正确,你想填充 DropDownList 来自 EditItemTemplate 。如果是这种情况,那么本文应该为您提供帮助: ASP.NET GridView:在编辑模式下实施级联DropDownList [ ^ ]
If I understand correctly, you wanted to populate your DropDownList from within EditItemTemplate. If that's the case then this article should help you with that: ASP.NET GridView: Implementing Cascading DropDownList on Edit Mode[^]


这篇关于如何在gridview中填写下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆