我可以弄清楚这样做的几种方式,但是没有真正整洁的“.NET”方式。
我正在使用Gridview显示数据表...其中一列专门用于显示布尔变量的状态。我想要遇到的规范是在代表这个变量的列中有一个“On”和“Off”按钮....然后单击ON会在我的数据库中将变量更改为1,然后单击OFF将更改它等于0等。
我通常会处理php,但我猜这可以使用模板字段以干净的方式完成...但是,...我不知道怎么回事,这就是为什么我要问:)
任何提示将不胜感激。 安德鲁
答案 0 :(得分:4)
这样的事情应该得到你想要的东西。
ASPX方面:
<templateField>
<itemtemplate>
<asp:button runat="server" id="myButton" Text='<%# Response.Write(IIF(Eval("MyBool"),"Off", "On")) %>' CommandName='<%# Response.Write(IIF(Eval("MyBool"),"TurnOff", "TurnOn")) %>' CommandArgument='<%# Eval("MyRowIdentifier") %>' />
</itemTemplate>
</templateField>
代码背后的代码:
protected sub Row_itemCommand (ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles MyGrid.RowCommand
Dim btn As Button =e.Item.FindControl("myButton")
Select case e.CommandName
case "TurnOff"
MyTurnOffFunction(e.CommandArgument)
btn.Text = "Off"
btn.CommandName="TurnOn"
Case "TurnOn"
MyTurnOnFunction(e.CommandArgument)
btn.Text = "On"
btn.CommandName="TurnOff"
End Select
End Sub
答案 1 :(得分:1)
你对模板字段是正确的:
<asp:GridView ID="GridView1" runat="server" onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="img_on" Visible='<%# (bool) Eval("FieldBoolean") %>' runat="server" ImageUrl="GreenLight.jpg" />
<asp:Image ID="img_off" Visible='<%# !(bool) Eval("FieldBoolean") %>' runat="server" ImageUrl="RedLight.jpg" />
</ItemTemplate>
<EditItemTemplate>
<asp:button ID="btn_switch" runat="server" Text='<%# Response.Write( (bool) Eval("FieldBoolean") ? "Off" : "On")) %>' CommandName="switch"
CommandArgument='<%# Eval("FieldBoolean") %>' />
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandArgument == "switch")
{
UpdateValue(!bool.Parse((string) e.CommandArgument));
}
}
答案 2 :(得分:1)
我认为你可以这样做:
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="btnEliminar" runat="server"
ImageUrl=<%# ((bool) Eval("condition"))? "yes.png":"no.png" %>
OnClick="btnEliminar_Click"
/>
</ItemTemplate>
</asp:TemplateField>
</columns>
在图像OnClick事件上,您应根据必须评估的逻辑更新数据库。
答案 3 :(得分:0)
网页强>
<ItemTemplate>
<asp:ImageButton id="OnButton" runat="server" OnClick="ToggleButtons" visible="True"/>
<asp:ImageButton id="OffButton" runat="server"OnClick="ToggleButtons" visible="False" />
</ItemTemplate>
代码背后
protected void ToggleButtons(object sender, EventArgs e)
{
if (OnButton.visible)
{
OnButton.visible = false;
OnButton.visible = true;
} else {
OnButton.visible = true;
OnButton.visible = false;
}
DoWork(OnButton.visible);
}