簡體   English   中英

從ListBox中的ListItem獲取值而不是文本

[英]Getting Value instead of Text from ListItem in ListBox

我有這個代碼

 protected void btnPrasaj_Click(object sender, EventArgs e)
{
    List<ListItem> lista = new List<ListItem>();
    string prasanje = null;
    Application.Lock();
    if (Application["prasanja"] == null) // za prvpat se postavuva prasanje
    {
        prasanje = txtNaslov.Text + "\n\n\n" + txtPrasanje.Text;
        lista.Add(new ListItem(prasanje, ddltema.SelectedIndex.ToString()));
        lstProblemPrasanje.DataSource = lista;
        lstProblemPrasanje.DataTextField = "Text";
        lstProblemPrasanje.DataValueField = "Value";
        lstProblemPrasanje.DataBind();
        Application["prasanja"] = lista;
    }
    else
    {
        lista=(List<ListItem>)Application["prasanja"];
        prasanje = txtNaslov.Text + "\n\n\n" + txtPrasanje.Text;
        lista.Add(new ListItem(prasanje, ddltema.SelectedIndex.ToString()));
        lstProblemPrasanje.DataSource = lista;
        lstProblemPrasanje.DataTextField = "Text";
        lstProblemPrasanje.DataValueField = "Value";
        lstProblemPrasanje.DataBind();
        Application["prasanja"] = lista;
    }
    Application.UnLock();
}

當我在列表框中單擊此按鈕時,我得到的是數字(即項目的值),而不是文本字段的內容。

由於您的數據源是ListItems的列表,因此您不必指定DataTextField和DataValueField。 只需注釋掉以下幾行。

lstProblemPrasanje.DataTextField = "Text";
lstProblemPrasanje.DataValueField = "Value";

因此,您的代碼應為:

protected void btnPrasaj_Click(object sender, EventArgs e)
{
    List<ListItem> lista = new List<ListItem>();
    string prasanje = null;
    Application.Lock();
    if (Application["prasanja"] == null) // za prvpat se postavuva prasanje
    {
        prasanje = txtNaslov.Text + "\n\n\n" + txtPrasanje.Text;
        lista.Add(new ListItem(prasanje, ddltema.SelectedIndex.ToString()));
        lstProblemPrasanje.DataSource = lista;
        //lstProblemPrasanje.DataTextField = "Text";
        //lstProblemPrasanje.DataValueField = "Value";
        lstProblemPrasanje.DataBind();
        Application["prasanja"] = lista;
    }
    else
    {
        lista=(List<ListItem>)Application["prasanja"];
        prasanje = txtNaslov.Text + "\n\n\n" + txtPrasanje.Text;
        lista.Add(new ListItem(prasanje, ddltema.SelectedIndex.ToString()));
        lstProblemPrasanje.DataSource = lista;
        //lstProblemPrasanje.DataTextField = "Text";
        //lstProblemPrasanje.DataValueField = "Value";
        lstProblemPrasanje.DataBind();
        Application["prasanja"] = lista;
    }
    Application.UnLock();
}

在此類數據源項的情況下,您無需顯式指定DataTextDataValue字段,還可以通過以下方式刪除if/else中的重復部分來簡化代碼:

protected void btnPrasaj_Click(object sender, EventArgs e)
{
    string key = "prasanja";
    List<ListItem> lista = new List<ListItem>();
    string prasanje = null;
    Application.Lock();
    if (Application[key] != null) // za prvpat se postavuva prasanje
    {
        lista = (List<ListItem>)Application[key];
    }

    prasanje = txtNaslov.Text + "\n\n\n" + txtPrasanje.Text;
    lista.Add(new ListItem(prasanje, ddltema.SelectedIndex.ToString()));
    lstProblemPrasanje.DataSource = lista;
    lstProblemPrasanje.DataBind();
    Application[key] = lista;
    Application.UnLock();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM