[网络收集]ASP.NET两种办法给DropDownList绑定SqlDataReader 及在gridview等控件中绑定dropdownlist的简单方法

第一种方法:

        string sqlstr = "DATA SOURCE=127.0.0.1,1433;Password=123;UID=sa";
        string cmdstr = "SELECT * FROM admin";
        SqlConnection conn = new SqlConnection(sqlstr);
        SqlCommand cmd = new SqlCommand(cmdstr, conn);
        SqlDataReader rdr = cmd.ExecuteReader();
        if(rdr!=null)
        {
           DropDownList1.DataSource = rdr;
           DropDownList1.DataTextField = "name";
           DropDownList1.DataValueField = "name";
           DropDownList1.DataBind();
       }

说明:使用这种方法绑定切忌不能对SqlDataReader进行Read(),因为这样子会从第二条数据绑定开始

我给DropDownList的DataTextField和DataValueField都绑定同一个字段name是为了演示而已,大家可

以在具体应用绑定两个不同字段,最后要记得DataBind()一下,否则无数据显示

第二种方法:

        string sqlstr = "DATA SOURCE=127.0.0.1,1433;Password=123;UID=sa";
        string cmdstr = "SELECT * FROM admin";
        SqlConnection conn = new SqlConnection(sqlstr);
        SqlCommand cmd = new SqlCommand(cmdstr, conn);
        SqlDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            ListItem item = new ListItem(rdr[0].ToString(), rdr[0].ToString());
            DropDownList1.Items.Add(item);
        }

说明:这个是笨方法,相当把数据一条一条的填充到DropDownList里面,因为DropDownList里面的每一

项都是一个类型为ListItem的这么个东西,所以可以给它一个一个绑定,当然这种办法效率肯定不高,不

合适数据量大的时候的绑定。

最后补充一下,我这里说的是SqlDataReader的作为数据源,其实还可以使用DataTable,DataSet这些来

作为它的数据库也是一样的道理。

 

在gridview等控件中绑定dropdownlist的简单方法

<asp:TemplateField HeaderText="是否锁定">
                <ItemTemplate>
                    <asp:DropDownList ID="isLock" runat="server" SelectedValue=<%# Bind("cateIsLock") %>>
                        <asp:ListItem Text="是" Value="True"></asp:ListItem>
                        <asp:ListItem Text="否" Value="False"></asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>

摘自 http://hi.baidu.com/new%BD%CC%B8%B8/blog/item/e972900a51f88e8cd1581b06.html

你可能感兴趣的:(GridView)