我确实搜索过其他类似的问题,其中大部分与jscript有关。我正在努力学习C#,所以希望有答案。我似乎总是接近答案,却发现我遇到了另一个隐藏的异常。我试图做的是解决必须存在的更优雅的方法,但这里是:我有一个复选框,当选中时,将Label1文本更改为“1”并取消选中将Label1文本更改为“0” 。单击页面上的按钮时,它会将数据字段发送到存储过程。即使我可以看到标签值是1或0,发送到SP函数总是为Label1发送'NULL',我假设它是空白标签的默认值。那么当单击按钮时,如何让页面读取标签的当前值?
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-/W3C//DTD/ XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1-transitional.dtd">
<script runat="server">
public void InsertCard (object source, EventArgs e)
{
SqlDataSource1.Insert();
}
public void CheckBox1_CheckChanged (object source, EventArgs e)
{
Response.Write("");
if (CheckBox1.Checked == true)
{
Label1.Text = "1";
}
else
{
Label1.Text = "0";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:sqldatasource
id="SqlDataSource1"
runat="server"
connectionstring="<%$ ConnectionStrings:DevTestConnectionString %>"
insertcommand="AddMember" InsertCommandType="StoredProcedure">
<insertparameters>
<asp:FormParameter Name="CardNumber" formfield="CardNumberBox" Type="int32" />
<asp:FormParameter Name="NameFirst" formfield="NameBox" Type="String" />
<asp:FormParameter Name="Valid" formfield="Label1" Type="string" />
</insertparameters>
</asp:sqldatasource>
<div>
<asp:Label ID="Label1" runat="server"></asp:Label>
<hr />
Last Name:<asp:TextBox id="NameBox" runat="server" Width="150px"></asp:TextBox>
<br>
Card Number:<asp:textbox id="CardNumberBox" runat="server" />
<br>
<asp:CheckBox ID="CheckBox1" runat="server" Text=" Valid" OnCheckedChanged="CheckBox1_CheckChanged" AutoPostBack="true" />
<br>
<asp:button id="Button1" runat="server" text="Add Card" onclick="InsertCard" />
</div>
</form>
</body>
</html>
答案 0 :(得分:0)
为何使用标签?直接使用复选框并将表列上的数据类型设置为bit。将标签更换为以下内容。
<asp:ControlParameter ControlID="CheckBox1" Name="Valid" PropertyName="Checked" Type="Boolean"/>