【问题标题】:How to refer to a TextBox in a datalist of the same row of the Button?如何在Button的同一行的datalist中引用TextBox?
【发布时间】:2014-02-06 16:27:05
【问题描述】:

我想要数据列表中的按钮 OnClick 从按钮同一行上的两个文本框中获取文本.. 我如何使用 C# 来引用它,记住我想使用自己的存储过程和函数“OnClicking”按钮不使用 SqlDataSource 控件

<asp:DataList ID="DataList1" runat="server">
  <ItemTemplate>
    <table class="auto-style2">
      <tr>
        <td>
          <asp:Label ID="Label1" runat="server" Text='<%# Eval("UDI") %>'></asp:Label>
        </td>
        <td>
          <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("name") %>'></asp:TextBox>
        </td>
        <td>
          <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("describtion") %>'></asp:TextBox>
        </td>
        <td>
          <asp:Button ID="Button2" runat="server" Text="Modify" CommandArgument='<%# Eval("UDI") %>' OnCommand="Button2_Command" />
        </td>
      </tr>
    </table>
  </ItemTemplate>
</asp:DataList>

这是后面的代码

AdminControlEntities db = new AdminControlEntities();
var x=db.sp_GetAllProducts(); //Stored procedure that returns a selection of data
DataList1.DataSource = x.ToList();
DataList1.DataBind();

直到这里我可以正确查看我的数据,我需要在此示例中使用我自己的存储过程从 TextBox1 和 TextBox2 更新到 Label1 ID

【问题讨论】:

    标签: c# asp.net datasource bind datalist


    【解决方案1】:

    将 OnItemCommand 添加到您的标记中

    <asp:DataList ID="DataList1" runat="server" OnItemCommand="Modify_ItemCommand" >
    

    然后在后面的代码:

    protected void Modify_ItemCommand(object source, DataListCommandEventArgs e)
        {
     
            /* select the row index */
            int index = Convert.ToInt32(e.Item.ItemIndex);
     
            /*To get and Textbox of selected row*/
            TextBox txtbx = (TextBox)e.Item.FindControl("TextBox1");
     
            /* Assigning Value to your textbox */
            txtbx.Text = "What ever you want here";
     
        }
    

    【讨论】:

      【解决方案2】:

      您可以使用属性CommandName 声明按钮,然后使用ItemCommand 事件控制器。

      来源:http://msdn.microsoft.com/es-es/library/es4e4e0e(v=vs.100).aspx

      这里是一个工作示例(请注意,我使用的是UpdatePanel。由于页面内容将发生变化,如果您不使用它,您将收到服务器错误。更多信息here ):

      Test.aspx

      <asp:UpdatePanel ID="upDataList1" runat="server" ChildrenAsTriggers="true">
        <ContentTemplate>       
          <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand">
            <ItemTemplate>
              <table>
                <tr>
                  <td>
                    <asp:Label ID="lUID" runat="server" Text='<%# Eval("UID") %>' />
                  </td>
                  <td>
                    <asp:TextBox ID="tbName" runat="server" Text='<%# Eval("name") %>' />
                  </td>
                  <td>
                    <asp:TextBox ID="tbDescription" runat="server" Text='<%# Eval("description") %>' />
                  </td>
                  <td>
                    <asp:Button ID="bModify" runat="server" Text="Modify" CommandName="Modify" />
                  </td>
                </tr>
              </table>
            </ItemTemplate>
          </asp:DataList>
        </ContentTemplate>
      </asp:UpdatePanel>
      

      Test.aspx.cs

      public partial class Test : System.Web.UI.Page {
        protected void Page_Load(object sender, EventArgs e) {
          if (!Page.IsPostBack) {
            var x = db.sp_GetAllProducts();
            DataList1.DataSource = x;
            DataList1.DataBind();
          }
        }
        protected void DataList1_ItemCommand(Object sender, DataListCommandEventArgs e) {
          String a = ((TextBox) e.Item.FindControl("tbName")).Text;
          String b = ((TextBox) e.Item.FindControl("tbDescription")).Text;
          ((Label) e.Item.FindControl("lUID")).Text = a + " " + b;
        }
      }
      
      public class db {
        public String UID { get; set; }
        public String name { get; set; }
        public String description { get; set; }
      
        public db(String UID, String name, String description) {
          this.UID = UID;
          this.name = name;
          this.description = description;
        }
        public static List<db> sp_GetAllProducts() {
          List<db> list = new List<db>();
          list.Add(new db("1", "1a", "1b"));
          list.Add(new db("2", "2a", "2b"));
          list.Add(new db("3", "3a", "3b"));
          list.Add(new db("4", "4a", "4b"));
          list.Add(new db("5", "5a", "5b"));
          list.Add(new db("6", "6a", "6b"));
          return list;
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-19
        • 2012-11-02
        • 1970-01-01
        • 2023-03-07
        相关资源
        最近更新 更多