最近学到datalist这个控件 在网上看到findcontrol的用法,不是很明白!
我现有一个有中有ID,Title,Body这三个字段
前台代码是这样:
asp:DataList ID="datalist2" runat="server" BackColor="#DEBA84" 
         ondeletecommand="DataList1_DeleteCommand"  onupdatecommand="datalist2_UpdateCommand"  >
           <ItemTemplate>
            <asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />
             <asp:Label ID="BodyLabel" runat="server" Text='<%# Eval("Body") %>' />
            <asp:Label ID="DatetimeLabel" runat="server" Text='<%# Eval("Datetime") %>' />
          <asp:Button ID="btnUpdate" runat="server" onclick="btnUpdate_Click" Text="更新" CommandName="update" />
          protected void datalist2_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            int id = int.Parse(datalist2.DataKeys[e.Item.ItemIndex].ToString());
            //string title = ((Label)e.Item.FindControl("TitleLabel")).Text.Trim();//是这样写吗?
            //string body = ((Label)e.Item.FindControl("BodyLabel")).Text.Trim();//????????
                string SQL="update Froms set 。。                ///
            conn = new SqlConnection(str);
             conn.open()
             comm = new SqlCommand(SQL, conn);
            comm.ExecuteNonQuery();
我看网上都是找的textbox!实在搞不明白~~麻烦大家指点下我~谢谢
            Bind();//绑定
                   }
 

解决方案 »

  1.   

    你不是要更新吗?新输入的内容 要用TextBox来获取吧,不就是Find  TextBox了吗!
      

  2.   

    你要更新的话肯定要用textbox  label你怎么让用户赋值?
      

  3.   

    你是意思是要我重新放几个textbox在前台,然后再查找是吗?我想在原来数据的基础之上对它进行更新(覆盖)
      

  4.   

    findControl 直译就是 找 控件啊!
    为什么要找呢?
    以TitleLabel为例, 你要是页面上直接放一个ID为TitleLabel的控件,后台是不是直接就能TitleLabel.
    这样“.”出他的属性和方法。但是你把Label放在了ItemTemplate下, 数据绑定后, 这个DataList 是不是会出现好多的Lable!你怎么再在后台TitleLabel.呢?这时候,FindControl就有用了。 你可以用e.Item.FindControl("TitleLabel")来找到控件了。
    前面的(Label)是强制转换。 因为你ItemTemplate 循环的TitleLabel 类型就是Label 。 假如类型是TextBox,你就强制转换为TextBox类型。 不一定非得去找TextBox的, FindControl可以找到你页面上的任何的控件
      

  5.   

    先容器 然后 再 findcontrol吧
      

  6.   

    直接写DataList1的ItemCommand事件里面
    if(e.CommandName="update")
    {
    }
    else if(e.CommandName="delete")
    {
    }
      

  7.   

     <asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />   <asp:Label ID="BodyLabel" runat="server" Text='<%# Eval("Body") %>' /> <asp:Label ID="DatetimeLabel" runat="server" Text='<%# Eval("Datetime") %>' <asp:Button ID="btnUpdate" runat="server" onclick="btnUpdate_Click" Text="更新" 
    CommandName="update" />
    <asp:Button ID="btnDel" runat="server" onclick="btnDel_Click" CommandName="delete"  Text="删除" />
    <asp:Button ID="btnEdit" runat="server" onclick="btnEdit_Click" Text="编辑" />后台:
     protected void datalist2_EditCommand(object source, DataListCommandEventArgs e)
            {
                datalist2.EditItemIndex = e.Item.ItemIndex;
                Bind();
            }
     protected void datalist2_UpdateCommand(object source, DataListCommandEventArgs e)
            {
                int id = int.Parse(datalist2.DataKeys[e.Item.ItemIndex].ToString());
                string title = ((Label)e.Item.FindControl("TitleLabel")).Text.Trim();
                string body = ((Label)e.Item.FindControl("BodyLabel")).Text.Trim();
                conn = new SqlConnection(str);
                conn.Open();
                string SQL="update Froms set TitleLabel="+title+",BodyLabel='"+body+"' where ID="+id+"";
                comm = new SqlCommand(SQL, conn);
                comm.ExecuteNonQuery();
                Bind();
                datalist2.EditItemIndex = -1;
                conn.Close();
            }
       protected void datalist2_ItemCommand(object source, DataListCommandEventArgs e)
            {
                      }
    发现这样不对!麻烦高人们帮帮忙!