0

我尝试在gridview查询的下拉列表中添加值工作正常,但它显示为这个.. 在此处输入图像描述

网格视图 html

<asp:BoundField HeaderText="ApproveID" DataField="ApproveID" ></asp:BoundField>
            <asp:TemplateField>
                <ItemTemplate>

                   <asp:Label ID="lblCountry" runat="server" Text='<%# 
             Eval("ApproveID") %>' Visible = "false" />

                    <asp:DropDownList ID="DropDownList4" runat="server"
           class="vpb_dropdown">
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>

代码

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //Find the DropDownList in the Row
            DropDownList ddlCountries = (e.Row.FindControl("DropDownList4") as
                  DropDownList);
            ddlCountries.DataSource = GetData("SELECT ApproveID,ApproveType FROM
           ApproveType");
            ddlCountries.DataTextField = "ApproveType";
            ddlCountries.DataValueField = "ApproveID";
            ddlCountries.DataBind();

            //Add Default Item in the DropDownList
            ddlCountries.Items.Insert(0, new ListItem("Please select"));

            //Select the Country of Customer in DropDownList
            //string country = (e.Row.FindControl("lblCountry") as Label).Text;
            //ddlCountries.Items.FindByValue(country).Selected = true;
        }
    }

值不在下拉列表中..如何在下拉列表中显示值?当我调试代码时,它无法显示任何错误

获取数据代码

private DataSet GetData(string query)
    {
        string conString = 
       ConfigurationManager.ConnectionStrings["mydms"].ConnectionString;
        SqlCommand cmd = new SqlCommand(query);
        using (SqlConnection con = new SqlConnection(conString))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataSet ds = new DataSet())
                {
                    sda.Fill(ds);
                    return ds;
                }
            }
        }
4

4 回答 4

1

DropDownList1.SelectedValue = "Some Value";

那么您将获得默认值

于 2013-10-04T11:54:58.053 回答
0

获取数据函数返回空值或空值,因此在调试时不会出现错误或异常。您的代码工作得很好,可以更好地检查数据库中的数据。

于 2013-10-04T11:31:59.410 回答
0

在我参与的一个项目中,我们返回了 DataTable 而不是 DataSet,它在下拉菜单中运行良好。我们有这样的代码:

if( ds.Tables.Count == 1)
    return ds.Tables[0];
else
    return new DataTable();

此外,我会改变数据绑定的方式。在我看来,使用 ObjectDataSource 是一种更好的方法,因为仅在需要数据时才调用该事件,并且您不必进行如下检查:

if (e.Row.RowType == DataControlRowType.DataRow)
于 2013-10-04T11:40:10.167 回答
0

在您的最后一条评论之后,您应该检查是否DataSet包含您想要设置为选中的记录:

if (ddlCountries.Items.FindByValue(country) != null) 
{ 
   ddlCountries.Items.FindByValue(country).Selected = true; 
}
于 2013-10-04T12:11:44.097 回答