0

ドロップダウンがあり、データソースがあり、空白のデータを追加したかったのですが、選択した値は常に 0 でした

私のコードビハインド:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
listhostel()   
End Sub

Protected Sub listhostel()
Dim dash As New DataSet
Dim clas As New Class1

dash = clas.returndataset("select ID as idhostel,Nama from Hostel")

listhotelx.DataSource = dash
listhotelx.DataBind()
listhotelx.Items.Insert(0, New ListItem("-- Select --", 0))
End Sub

Protected Sub viewdatagrid_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles viewdatagrid.Click    
Label1.Text = listhotelx.SelectedValue 
viewdata()
End Sub

ファイル.aspx

 <asp:DropDownList ID="listhotelx" runat="server" DataTextField="Nama"
 DataValueField="idhostel" >
        </asp:DropDownList>
4

4 に答える 4

0

項目をデータバインドして追加した後、項目の SelectedIndex も設定する方法に注目してください。

listhotelx.Items.Insert(0, new ListItem("-- Select --", String.Empty));
listhotelx.SelectedIndex = 0;
于 2012-07-16T06:29:24.950 に答える
0

新しいアイテムをドロップダウン リストに追加した後、DropDownList.DataBind() メソッドを呼び出します。ListItem メソッドは文字列値のみを受け入れるため、コードで 0 を "0" に置き換えます。

Protected Sub listhostel()
Dim dash As New DataSet
Dim clas As New Class1

dash = clas.returndataset("select ID as idhostel,Nama from Hostel")

listhotelx.DataSource = dash    
listhotelx.Items.Insert(0, New ListItem("-- Select --", "0")) // here the 2nd argument is string.
listhotelx.DataBind()
End Sub

//    I have checked this code and it works fine for me   

ドロップダウンリストにもアイテムを追加しました

<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
   <asp:ListItem Text="name1" Value="-1" ></asp:ListItem>
</asp:DropDownList>

新しいアイテムを追加するときにボタンをクリックすると、インデックス0にアイテムが正常に追加されます。

 protected void Button1_Click(object sender, EventArgs e)
{
    DropDownList1.Items.Insert(0,new ListItem("name", "-1"));         
    DropDownList1.DataBind();
}
于 2012-07-16T06:24:37.453 に答える
0

引数として持つListItem必要があり、 which isを渡しているため、エラーが発生します。(string,string)("-- Select --",0)(string,int)

上に空白のデータを追加したい場合は、空の文字列を入力するだけです。

listhotelx.Items.Insert(0, new ListItem(String.Empty, String.Empty));
listhotelx.SelectedIndex = 0;
于 2012-07-16T06:36:05.803 に答える
0

Page_Load で Page.IsPostBack を追加する必要があります

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            listhostel()
        End If
    End Sub
于 2012-07-16T06:43:51.390 に答える