c#代码中的下拉列表错误

本文关键字:下拉列表 错误 代码 | 更新日期: 2023-09-27 18:10:04

我想在页面加载时显示下拉列表中的值,该值为"1年"。这是我的数据库表

id  instal
0   Choose
6   6 Month
12  1 Year
24  2 Year
36  3 Year

下面是我的ASPX代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
        DataSourceID="SqlDataSource1" DataTextField="instal" DataValueField="id" 
        onselectedindexchanged="DropDownList1_SelectedIndexChanged">
    </asp:DropDownList>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:paconn %>" 
        SelectCommand="SELECT * FROM [cms_instal] ORDER BY [id]">
    </asp:SqlDataSource>
</asp:Content>

和我的c#代码:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections;
using System.Web.SessionState;
public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DropDownList1.Text = "1 Year";
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
    }
}

,但问题是,当我的页面加载它给出了一个错误'DropDownList1'有一个无效的SelectedValue,因为它不存在于项目列表中。参数名称:value"

我正在使用ASP。. Net c#, SQL Server 2008.

c#代码中的下拉列表错误

下拉列表的text属性获取或设置SelectedValue。由于您的DataValueField设置为"id",您需要将Text属性设置为"12"。

将文本移动到LoadComplete事件

    void Page_LoadComplete(object sender, EventArgs e)
    {
        DropDownList1.Text = "1 Year"; 
    }

列表绑定在页面加载中没有发生,因此列表不能接受列表中没有的另一个值。在页面加载后设置该值将允许它使用现有值。