我不确定ASP.NET是如何工作的,因为我还是很新的,来自PHP背景,其中大多数事情都是通过POST完成的。我在代码后面使用VB.NET。主要是因为这里使用的主程序是用VB.NET编写的,我希望在不编译库的情况下保持代码的可移植性。
我的问题如下。我在页面上有一个DropDownList。我用数据库中的数据填充它。这似乎工作正常。
我有一个按钮,可以将CLIENTCODE更改为DropDownBox中选择的任何内容。这不起作用。相反,索引总是-1。
网页代码
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/MasterPage.Master" CodeBehind="Admin.aspx.vb" Inherits="WOTC_CP.Admin" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="RightBody" runat="server">
<%
Load_UserList_List()
%>
<h1 class="sub-header">Administration Toolbox</h1>
<p>If you are not an Administrator, please send us an alert and leave this page at once.</p>
<div class="row">
<div class="form-group">
<div class="col-md-4">
<asp:Label ID="Label1" runat="server" Text="Label">Change my Clientcode;</asp:Label>
<asp:DropDownList ID="cboClientList" class="form-control" runat="server" >
</asp:DropDownList>
<asp:Button ID="cmdChangeClientCode" class="btn btn-primary" runat="server" Text="Change" />
</div>
</div>
</div>
代码背后
Public Sub Load_CLIENTCODE_List()
If IsPostBack = False Then
Using DB As New wotcDB
Dim r = (From t In DB.client_main Order By t.CLIENTCODE Select t.CLIENTCODE).Distinct
For Each Client In r
Dim input As New ListItem
input.Text = Client
input.Value = Client
cboClientList.Items.Add(input)
Next
End Using
End If
End Sub
Private Sub cmdChangeClientCode_Click(sender As Object, e As EventArgs) Handles cmdChangeClientCode.Click
Dim CLIENTCODE As String = CType(Session("CLIENTCODE"), String)
Dim UserName As String = CType(Session("UserName"), String)
Using DB As New wotcDB
Dim u = (From t In DB.website_users Where t.UserName = UserName).FirstOrDefault
If u IsNot Nothing Then
Dim TempID As Integer = cboClientList.SelectedIndex
Dim TempValue As String = cboClientList.SelectedValue
u.CLIENTCODE = cboClientList.SelectedValue
DB.SaveChanges()
End If
End Using
End Sub
我在堆栈上尝试了其他答案,但似乎没有任何效果。任何想法?
答案 0 :(得分:0)
在asp.net中,下拉列表包含两个您想要设置的关键属性。 DataTextField =显示名称和DataValueField =要存储到DB的值。 话虽如此,你需要捕捉&#34; SelectedValue&#34;如果你想获得DataValueField。
答案 1 :(得分:0)
问题是我在加载DropDownList之前加载了填充DropDownList的脚本。所以它总是空的。解决方案是在Page_Load上加载列表。