在UserControl中将选定值设置为DropDownList

时间:2011-08-29 13:23:00

标签: asp.net linq-to-sql c#-4.0 drop-down-menu

有人可以帮我将DropDownList的选定值设置为数据库给定值。我有几个TextBox,从数据库中设置值并不难,但让我感到疯狂的是DropDownList。

 <asp:TextBox ID="txtNaziv" runat="server" Width="430px" Text='<%# DataBinder.Eval(Container, "DataItem.Naziv") %>'></asp:TextBox>

据我所知,无法将所选项目值从代码前端设置为DropDownList,但我能够找到类似这样的内容(来自Telerik的RadGrid文档的代码片段):

        protected void EmployeeDetails_DataBinding(object sender, System.EventArgs e)
    {
        ArrayList tocs = new ArrayList(new string[] { "Dr.", "Mr.", "Mrs.", "Ms." });

        ddlTOC.DataSource = tocs;
        ddlTOC.DataBind();

        object tocValue = DataBinder.Eval(DataItem, "TitleOfCourtesy");

        if (tocValue == DBNull.Value)
        {
            tocValue = "Mrs.";
        }
        ddlTOC.SelectedIndex = tocs.IndexOf((string)tocValue);
        ddlTOC.DataSource = null;
    }

问题是我正在使用Linq-to-SQL,我不知道如何重新创建类似上面的代码。这就是我目前所拥有的:

        protected void ddlTip_DataBinding(object sender, EventArgs e)
    {
        TSEntities db = new TSEntities();

        var partType = (from pt in db.PartType
                       select new { pt.idPartType, pt.Naziv }).ToArray();

        ddlTip.DataSource = partType;
        ddlTip.DataTextField = "Naziv";
        ddlTip.DataValueField = "idPartType";
        ddlTip.DataBind();

        object Tip = DataBinder.Eval(DataItem, "idPartType");

    }

我还要补充一点,这个TextBoxes和DropDownList位于UserControl内部,该控件正在Telerik的RadGrid中用于其EditForm。

任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:4)

您需要设置下拉列表的SelectedValue:

ddlTOC.SelectedValue = tocValue;

你也可以这样做:

ListItem li = ddlTOC.Items.FindByValue(tocValue);
if (li != null)
    li.Selected = true;

修改: 包含将列表直接绑定到db.PartType:

的代码
TSEntities db = new TSEntities();       

ddlTip.DataSource = db.PartType; 
ddlTip.DataTextField = "Naziv"; 
ddlTip.DataValueField = "idPartType"; 
ddlTip.DataBind(); 

ddlTip.SelectedValue = DataBinder.Eval(DataItem, "idPartType").ToString();

答案 1 :(得分:0)

试试这个

ddlTip.Items.FindByValue(tocs).Selected = true;