【发布时间】:2017-01-06 21:29:43
【问题描述】:
我有两个按钮(btn_Out 和 btn_In)。如果名为 Machines 的 SQL 表中字段 Active 的值为 True (1),我想显示 btn_Out,如果 Active 的值则显示 btn_In > 设置为假 (0)。
gridview 中数据中的每一行都可能有不同的 Active 标志,因此按钮需要反映这一点。该按钮会将活动标志从 0 更改为 1,反之亦然(我有这个工作!)。
我使用的是gridview,我的代码如下:
ASP.NET
<ItemTemplate>
<asp:Button ID="btn_In" runat="server" Text="Set in Scope" CommandName="Update" CssClass="Button" />
</ItemTemplate>
<ItemTemplate>
<asp:Button ID="btn_Out" runat="server" Text="Set in Scope" CommandName="Update" CssClass="Button" />
</ItemTemplate>
C#:
DataTable dt = new DataTable();
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
con.Open();
con = new SqlConnection(cs);
// SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select [active] from [ALLMACHINES].[dbo].[Machines] where [serial_number] = @serialNumber";
cmd.Parameters.AddWithValue("@Serial_Number", serialNumber);
int Active = Convert.ToInt32(cmd.ExecuteScalar());
if (Active == 1)
{
btn_In.Visible = false;
btn_Out.Visible = true;
}
else if (Active == 0)
{
btn_Out.Visible = false;
btn_In.Visible = true;
}
}
我的 aspx.net 页面不喜欢我在 if 和 else if 语句中使用了按钮并且无法编译!任何提示将不胜感激:)
【问题讨论】:
-
您遇到的错误是什么?你能不能把完整的代码,方法名称和所有。
-
你的代码在哪里?您必须在 PageLoad 上执行此操作。
-
您需要熟悉 PostBacks 和 Rendering 的工作原理。您还需要在 C# 代码中获取按钮的属性才能执行此操作,该代码位于该代码所在的哪个事件后面...?
-
您应该从 sql-server 获得异常,因为您使用
@Serial_Number作为参数名称,但它实际上是@SerialNumber。你有一个Try...Catch{//ignore}可以吞下这个异常吗? -
我认为你的方法不对,如果你使用
foreach的这段代码,你就是在攻击服务器。我说foreach,因为你需要它来访问buttons