0

私はこのコードを持っています

 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();
}

ListBox でこのボタンをクリックすると、テキスト フィールドの内容ではなく、数値 (項目の値) が取得されます。

4

2 に答える 2

2

データソースは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();
}
于 2012-07-31T09:15:49.737 に答える
2

このようなデータ ソース アイテムの場合はフィールドを明示的に指定する必要はありません。また、次の方法で重複部分を削除してコードを簡素化DataTextします。DataValueif/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();
}
于 2012-07-31T09:20:47.793 に答える