dropdownList不显示选定的值

时间:2014-05-07 19:06:48

标签: asp.net

我是asp.net的新手。我有一个dropdownList,显示特定文章的所有类别。问题是,当我想编辑文章时,它不会显示在dropdownList中选择的默认值。

protected void datalist2_OnItemCreated(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.EditItem)
    {
        DropDownList drpdKategoria = e.Item.FindControl("drpdKategoria") as DropDownList;
        SqlConnection con = new SqlConnection(connection);
        string Qry = "select * from kategoria";
        SqlDataAdapter da = new SqlDataAdapter(Qry, con);
        DataSet ds = new DataSet();
        con.Open();
        da.Fill(ds);
        drpdKategoria.DataSource = ds;
        drpdKategoria.DataValueField = "id";
        drpdKategoria.DataTextField = "emertimi";              
        drpdKategoria.DataBind();
        drpdKategoria.SelectedValue = drpdKategoria.Items.FindByText(Qry).Value;
        //drpdKategoria.Items.FindByValue(string val).Selected = true;
        con.Close();
        con.Dispose();
        ds.Dispose();
        da.Dispose();
    }
}

EditArtikull.aspx

<asp:Label ID="Label5" runat="server" style="font-weight: 700">Kategoria</asp:Label>
    <fieldset>
        <asp:DropDownList ID="drpdKategoria" runat="server"  AutoPostBack="false"></asp:DropDownList>               
    </fieldset>
    <br/>  
  

错误:SystemNullReference异常{&#34;对象引用未设置为对象的实例。&#34;}

1 个答案:

答案 0 :(得分:1)

这条线可能无法找到任何东西:

drpdKategoria.Items.FindByText(Qry)

由于Qry是一个SQL语句:

string Qry = "select * from kategoria";

假设 DropDownList中的显示值不是SQL查询。因此,当您在第一行上调用.Value时,您将尝试取消引用未找到的内容(即null),从而导致错误。

你究竟想找到什么项目?如果要选择默认项目,则需要能够以某种方式识别该项目。在您的数据中,可以是已知的id值或已知的emertimi值。例如,如果您有一个已知的emertimi值,那么它将是:

drpdKategoria.SelectedValue = drpdKategoria.Items.FindByText("some known value").Value

为了使其更加健壮,您可能希望添加一些空检查。像这样:

var defaultValue = drpdKategoria.Items.FindByText("some known value");
if (defaultValue != null)
    drpdKategoria.SelectedValue = defaultValue.Value