我从数据库中填充了一个下拉列表。这工作正常。它具有绑定性并按预期显示正确的数据。但是当我更改它的值并尝试将其保存到数据库时,没有任何东西被保存,这会导致NULL异常。
这是我的C#代码:
protected DropDownList ddStatus;
protected RadioButtonList rblInternalNotes;
public void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
ValidateSession();
ddStatus_Bind();
rblInternalNotes.Items.Insert(0,new ListItem("External","0"));
rblInternalNotes.Items.Insert(1,new ListItem("Internal","1"));
btnSave.Attributes.Add("onClick","return checkForm();");
/* code continues */
}
要测试我的保存按钮,我正在使用它:
public void btnSave_OnClick(object Sender, System.Web.UI.ImageClickEventArgs E)
{
Response.Write(ddStatus.SelectedValue);
Response.End();
绑定的代码是:
protected void ddStatus_Bind()
{
SqlConnection Conn = GetConnection();
string SQL;
SqlCommand Cmd;
SqlDataAdapter DAdpt = new SqlDataAdapter();
DataSet DSet = new DataSet();
SQL = "SELECT Name,StatusID FROM tbl_test";
Cmd = new SqlCommand(SQL,Conn);
DAdpt.SelectCommand = Cmd;
DAdpt.Fill(DSet);
ddStatus.DataSource = DSet;
ddStatus.DataBind();
Conn.Close();
}
这是我的前端代码:
<TR ID="trStatus" RunAt="Server" visible="false">
<TD Class="Spreadsheet"><B>Status</B></TD>
<TD Class="Spreadsheet">
<ASP:DropDownList ID="ddStatus" DataTextField="Name" DataValueField="StatusID" AppendDataBoundItems="True" RunAt="Server"></ASP:DropDownList>
</TD>
</TR>
保存按钮:
<ASP:ImageButton ID="btnSave" OnClick="btnSave_OnClick" ImageURL="/images/buttons/btnSave.gif" Border="0" RunAt="Server"/>
我有
<FORM EnableViewState = false runat="server">
作为表单标记和
<%@ Page Language="C#" debug="True" Inherits="Default" src="Default.cs" validateRequest="false" EnableEventValidation="false"%>
作为页面标记。
如果我删除了表单标记中的EnableViewState = false
,它只会在第二次点击后生效。它永远不会在第一次点击时保存。
有人可以帮忙吗?一如既往地谢谢。
答案 0 :(得分:0)
让它发挥作用!
我刚刚在页面初始化时进行了绑定,就像这样
protected override void OnInit(EventArgs e)
{
ddStatus_Bind();
rblInternalNotes.Items.Insert(0,new ListItem("External","0"));
rblInternalNotes.Items.Insert(1,new ListItem("Internal","1"));
}
我希望能帮助其他面临同样问题的人。
P.S:我不明白这篇文章的下注。