怎么让DropDownList动态的根据数据库中的内容而显示某一项

时间:2022-01-18 00:49:34
我的DropDownList中有几个值,我不想让他显示第一个项,而是根据数据库中的内容显示其中某一项。比如DropDownList中有“校园新闻”,“社会新闻”,“滚动新闻”3个项。如果我数据库中的内容为“社会新闻”,打开页面时,则让它显示为“社会新闻”项。怎么半?
我使用DropDownList1.Items.FindByValue(“社会新闻“).Selected = true方法,出现“未将对象引用设置到对象的实例。”的错误。谁知道怎么弄啊?

11 个解决方案

#1



DropDownList1.Items.FindByValue(“社会新闻“).Selected = true



if(DropDownList1.Items.FindByValue(“社会新闻“)!= null)
   DropDownList1.Items.FindByValue(“社会新闻“).Selected = true


需要注意几点 ,在DropDownList1绑定之后 在调用 上面的代码,
社会新闻 估计你绑定的是text 而找的却是 value 不知 是否是你本意?

#2


 ListItem item1 = DropDownList1.Items.FindByValue(ds.Tables[0].Rows[0].ItemArray[2].ToString());
            if (item1 != null)
            {
               
                item1.Selected = true;
            }

#3


如果使用数据源帮顶  可以在数据绑定之后  DropDownList的DataBound事件钟写
也可以在Page_PreRender事件钟写

如果手动帮顶DropDownList,在帮顶之后就可以指定了...

#4


我是自己写的函数




cboNewsKey.SelectedIndex = GetIndexText(DR("NewsKeyWord").ToString, cboNewsKey, cboNewsKey.Items.Count - 1)


'取得选中的下拉框选项,
    '第一个参数为与下拉框相比较的值;第二个参数为下拉框的名称;
    '第三个参数为下拉框的列表总数
    Public Function GetIndexText(ByVal strString As String, ByVal strCboValue As System.Web.UI.WebControls.DropDownList, ByVal intIndexCount As Integer) As Integer
        '用循环取得列表项的值,然后判断是否相等
        Dim intIndex As Integer
        For intIndex = 0 To intIndexCount
            If strCboValue.Items.Item(intIndex).Text.ToString = strString Then
                Return intIndex
            End If
        Next
    End Function

#6


DropDownList1.Items.FindByValue(“社会新闻“).Selected = true 这个方法是没错的。应该是你数据绑定有错
1.先不选,看绑定数据有没有错
2.确定有给绑定Value值,而不只是Text值
3.如果只有Text值,添加Value值然后DropDownList1.Items.FindByValue(“社会新闻“).Selected = true
或用DropDownList1.Items.FindByText(“社会新闻“).Selected = true

#7


谢谢各位大哥。honey52570 说的对,我使用的是数据源绑定,所以我应该把DropDownList.Items.FindByValue("社会新闻").Selected=true写在DropDownList的DataBound事件,就成功了。非常感谢。

#8


lz要干嘛?

#9


等待牛人来答.

#10


 this.DropDownList1.SelectedIndex = this.DropDownList1.Items.IndexOf(this.DropDownList1.Items.FindByText("字符串"));

 this.DropDownList1.SelectedIndex = this.DropDownList1.Items.IndexOf(this.DropDownList1.Items.FindByValue("字符串"));

#11


我是从另一个页面跳转到这个页面的,我传的是产品ID,即proid,我这个页面是个修改的页面。但是在修改之前我要绑定这个产品的信息。我首先将所有分类信息都绑定到了DropDownList1里面了,我就是想在进入这个页面的时候显示我要修改的产品的分类名称。可是总是只显示DropDownList1的第一个项目。不知道怎么解决?下面是我绑定的分类代码:
CategoriesBLL bll = new CategoriesBLL();
        DataSet ds = new DataSet();
        ds = bll.GetAllCategories();

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            ListItem item = new ListItem();
            item.Text = ds.Tables[0].Rows[i]["catename"].ToString();
            item.Value = ds.Tables[0].Rows[i]["cateid"].ToString();

            DropDownList1.Items.Add(item);
        }

再下面是我跟据传过来的产品ID绑定该产品的信息:
int id = Convert.ToInt32(Request["proid"]);
        ProductsBLL bll = new ProductsBLL();
        DataSet ds = new DataSet();
        ds = bll.GetProByProID(id);

        if (ds.Tables[0].Rows.Count > 0)
        {
            string catename = ds.Tables[0].Rows[0]["catename"].ToString();
            txt_proname.Text = ds.Tables[0].Rows[0]["proname"].ToString();
            Image1.ImageUrl = "Products/" + ds.Tables[0].Rows[0]["propic"].ToString();
            
            DropDownList1.Items.FindByText(catename).Selected = true;

        }

不知道为什么每次点进来到这个页面的时候,dropdownlist里面的值都不是我想要的值

#1



DropDownList1.Items.FindByValue(“社会新闻“).Selected = true



if(DropDownList1.Items.FindByValue(“社会新闻“)!= null)
   DropDownList1.Items.FindByValue(“社会新闻“).Selected = true


需要注意几点 ,在DropDownList1绑定之后 在调用 上面的代码,
社会新闻 估计你绑定的是text 而找的却是 value 不知 是否是你本意?

#2


 ListItem item1 = DropDownList1.Items.FindByValue(ds.Tables[0].Rows[0].ItemArray[2].ToString());
            if (item1 != null)
            {
               
                item1.Selected = true;
            }

#3


如果使用数据源帮顶  可以在数据绑定之后  DropDownList的DataBound事件钟写
也可以在Page_PreRender事件钟写

如果手动帮顶DropDownList,在帮顶之后就可以指定了...

#4


我是自己写的函数




cboNewsKey.SelectedIndex = GetIndexText(DR("NewsKeyWord").ToString, cboNewsKey, cboNewsKey.Items.Count - 1)


'取得选中的下拉框选项,
    '第一个参数为与下拉框相比较的值;第二个参数为下拉框的名称;
    '第三个参数为下拉框的列表总数
    Public Function GetIndexText(ByVal strString As String, ByVal strCboValue As System.Web.UI.WebControls.DropDownList, ByVal intIndexCount As Integer) As Integer
        '用循环取得列表项的值,然后判断是否相等
        Dim intIndex As Integer
        For intIndex = 0 To intIndexCount
            If strCboValue.Items.Item(intIndex).Text.ToString = strString Then
                Return intIndex
            End If
        Next
    End Function

#5


#6


DropDownList1.Items.FindByValue(“社会新闻“).Selected = true 这个方法是没错的。应该是你数据绑定有错
1.先不选,看绑定数据有没有错
2.确定有给绑定Value值,而不只是Text值
3.如果只有Text值,添加Value值然后DropDownList1.Items.FindByValue(“社会新闻“).Selected = true
或用DropDownList1.Items.FindByText(“社会新闻“).Selected = true

#7


谢谢各位大哥。honey52570 说的对,我使用的是数据源绑定,所以我应该把DropDownList.Items.FindByValue("社会新闻").Selected=true写在DropDownList的DataBound事件,就成功了。非常感谢。

#8


lz要干嘛?

#9


等待牛人来答.

#10


 this.DropDownList1.SelectedIndex = this.DropDownList1.Items.IndexOf(this.DropDownList1.Items.FindByText("字符串"));

 this.DropDownList1.SelectedIndex = this.DropDownList1.Items.IndexOf(this.DropDownList1.Items.FindByValue("字符串"));

#11


我是从另一个页面跳转到这个页面的,我传的是产品ID,即proid,我这个页面是个修改的页面。但是在修改之前我要绑定这个产品的信息。我首先将所有分类信息都绑定到了DropDownList1里面了,我就是想在进入这个页面的时候显示我要修改的产品的分类名称。可是总是只显示DropDownList1的第一个项目。不知道怎么解决?下面是我绑定的分类代码:
CategoriesBLL bll = new CategoriesBLL();
        DataSet ds = new DataSet();
        ds = bll.GetAllCategories();

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            ListItem item = new ListItem();
            item.Text = ds.Tables[0].Rows[i]["catename"].ToString();
            item.Value = ds.Tables[0].Rows[i]["cateid"].ToString();

            DropDownList1.Items.Add(item);
        }

再下面是我跟据传过来的产品ID绑定该产品的信息:
int id = Convert.ToInt32(Request["proid"]);
        ProductsBLL bll = new ProductsBLL();
        DataSet ds = new DataSet();
        ds = bll.GetProByProID(id);

        if (ds.Tables[0].Rows.Count > 0)
        {
            string catename = ds.Tables[0].Rows[0]["catename"].ToString();
            txt_proname.Text = ds.Tables[0].Rows[0]["proname"].ToString();
            Image1.ImageUrl = "Products/" + ds.Tables[0].Rows[0]["propic"].ToString();
            
            DropDownList1.Items.FindByText(catename).Selected = true;

        }

不知道为什么每次点进来到这个页面的时候,dropdownlist里面的值都不是我想要的值