下拉列表选定的项目文本始终返回第一个项目文本

时间:2014-04-14 05:42:40

标签: c# asp.net drop-down-menu

我正在使用此代码填充数据库中的下拉列表。

public void fillcountry()
{
    BL obj = new BL();
    DataSet ds = obj.dss("select * from Country  ");
    drplistcountry.DataSource = ds;
    drplistcountry.DataTextField = "CountryName";
    drplistcountry.DataValueField = "CountryId";
    drplistcountry.DataBind();
    drplistcountry.Items.Insert(0, new ListItem("--Select--", "0"));
}

我在页面load()事件中使用此fillcountry()。 按钮点击事件

并重新启动selecteditm.text

drplistcountry始终显示第一个索引文本,如何解决?

6 个答案:

答案 0 :(得分:12)

在.aspx页面:

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication4._Default" 
EnableViewState="true" %>

用于下拉列表控件 将 EnableViewState 属性设置为true。

在.aspx.cs页面中:

在PageLoad事件中检查以下内容:

if(!IsPostBack)
{ 
    fillcountry();
}

答案 1 :(得分:1)

试试此代码

你应该只调用一次这个函数。

 public void fillcountry()
    {
        BL obj = new BL();
        DataSet ds = obj.dss("select * from Country  ");
        drplistcountry.DataSource = ds;
        drplistcountry.DataTextField = "CountryName";
        drplistcountry.DataValueField = "CountryId";
        drplistcountry.DataBind();
        drplistcountry.Items.Insert(0, new ListItem("--Select--", "0"));
        drplistcountry.SelectedIndex = drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));
    }

答案 2 :(得分:0)

一种简单的方法 您可以使用转发器在html代码中进行选择,如此

<select id="ddlAlbum" class="form-control" name="Cat">
        <asp:Repeater ID="rpt" runat="server">

            <ItemTemplate>

            <option  value='<%#Eval("CatID") %>'>
                <%#Eval("Title") %>
            </option>
                </ItemTemplate>

        </asp:Repeater>
        </select>

从数据库获取数据使用ado.net

 public void fillAlbum()
    {
        SqlConnection myconnection = new SqlConnection("Data Source=.;Initial Catalog=person;Integrated Security=True");
        SqlDataAdapter myadapter = new SqlDataAdapter("Select CatID,Title  from Category", myconnection);
        DataTable dt = new DataTable();
        myadapter.Fill(dt);
        rpt.DataSource = dt;
        rpt.DataBind();



    }

并获取所选值。 选择元素名称是(&#34; cat&#34;)所以

string cat = Request.Form["Cat"];

并直接存储到数据库

  SqlConnection myconnection = new SqlConnection("Data Source=.;Initial Catalog=person;Integrated Security=True");
        SqlCommand mycommand = new SqlCommand("insert into Picture(Title,Pic,CatID) values(@pname,@pic,@cat)", myconnection);

        mycommand.Parameters.AddWithValue("pname", txtname.Text.Trim());
        mycommand.Parameters.AddWithValue("pic", path);
        string cat = Request.Form["Cat"];
        mycommand.Parameters.AddWithValue("cat", cat.ToString());


        myconnection.Open();
        mycommand.ExecuteNonQuery();
        myconnection.Close();

答案 3 :(得分:0)

它非常简单,但很难找到,检查所有项目的值Datavaluefield不应为空或为空。

意思是:

ddl_Name.DataTextField = "NAME";
ddl_Name.DataValueField = "Roll";

如果值为空,则表示您无法获得第一项。

答案 4 :(得分:0)

DropdownList selected Item Text值将如下所示。

String value="India";
drplist.SelectedIndex = drplist.Items.IndexOf(drplist.Items.FindByText(value));

答案 5 :(得分:-1)

我也遇到了同样的问题,但是在我的情况下,所有项目的下拉值都相同,这导致了问题。 因此,请确保您正确绑定了下拉列表。

:)