【问题标题】:custom templatefield using ASP.NET Gridview使用 ASP.NET Gridview 的自定义模板字段
【发布时间】:2009-03-24 20:50:20
【问题描述】:

我可以想出几种破解方法,但没有真正简洁的“.NET”方法。

我正在使用 Gridview 显示数据表...其中一列专用于显示布尔变量的状态。我想要满足的规范是在代表这个变量的列中有一个“开”和“关”按钮……点击开会将我的数据库中的变量更改为 1,……点击关会改变它为 0 等。

我通常处理 php,但我猜这可以以某种方式使用模板字段以干净的方式完成......但是,..我不知道如何,这就是我问的原因:)

任何提示将不胜感激。 安德鲁

【问题讨论】:

    标签: .net asp.net gridview


    【解决方案1】:

    这样的事情应该会得到你想要的。

    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
    

    【讨论】:

    • 由于字符串错误而不得不取出 Reponse.Write ... .so 命令论证非常有用,谢谢。
    • 有没有特殊的方法可以将数据绑定回Gridview/database?
    • @Andrew - 我修改了示例来执行此操作,或者您可以重新绑定网格。
    【解决方案2】:

    我认为你可以这样做:

    <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】:

      您对模板字段的看法是正确的:

        <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));
                  }
              }
      

      【讨论】:

      • 我认为应该是数据绑定 语法。不是 Response.Write .
      • 谢谢,实际上是在完成我的答案之前错误地提前发布(并检查错误!)。
      • 谢谢,..使用了其中的一些代码,..,.. Response.Write 给了我错误,所以我把它拿出来并正常工作。
      【解决方案4】:

      页面

      <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);
      }
      

      【讨论】:

        猜你喜欢
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多