首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

DataList 怎么获取EditTemplate中TextBox修改后的值?

2013-03-01 
DataList 怎样获取EditTemplate中TextBox修改后的值??具体请看代码,.aspx代码:EditItemTemplatetdasp

DataList 怎样获取EditTemplate中TextBox修改后的值??
具体请看代码,
.aspx代码:
<EditItemTemplate>
                                <td>
                                    <asp:Label ID="Lbl_au_id" Text='<%#Eval("au_id")%>' runat="server"></asp:Label>
                                </td>
                                <td>
                                    <asp:TextBox ID="Txt_au_lname" Text='<%#Eval("au_lname")%>' runat="server" ></asp:TextBox>
                                </td>
                                <td>
                                    <asp:TextBox ID="Txt_au_fname" Text='<%#Eval("au_fname")%>' runat="server"></asp:TextBox>
                                </td>
                                <td>
                                    <asp:TextBox ID="Txt_phone" Text='<%#Eval("phone")%>' runat="server"></asp:TextBox>
                                </td>
                                <td>
                                    <asp:TextBox ID="Txt_address" Text='<%#Eval("address")%>' runat="server"></asp:TextBox>
                                </td>
                                <td>


                                    <asp:LinkButton ID="LinkButton1" Text="更新" CommandName="Update" runat="server"></asp:LinkButton>
                                    <asp:LinkButton ID="LinkButton2" Text="取消" CommandName="Cancel" runat="server"></asp:LinkButton>
                                </td>
                                <td>
                                    <asp:LinkButton ID="LinkButton3" Text="删除" CommandName="Delete" runat="server"></asp:LinkButton>
                                </td>
                            </EditItemTemplate>
.aspx.cs代码
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            try
            { 
                DataList ItemsList = (DataList)source;
                if (e.Item.ItemType == ListItemType.EditItem)
                {
                    TextBox Txt_au_lname = (TextBox)e.Item.FindControl("Txt_au_lname");
                    TextBox Txt_au_fname = (TextBox)e.Item.FindControl("Txt_au_fname");
                    TextBox Txt_phone = (TextBox)e.Item.FindControl("Txt_phone");
                    TextBox Txt_address = (TextBox)e.Item.FindControl("Txt_address");

                    string Id = ItemsList.DataKeys[e.Item.ItemIndex].ToString();
                    string a_ulname = Txt_au_lname.Text;
                    string a_ufname = Txt_au_fname.Text;
                    string a_phone = Txt_phone.Text;


                    string a_address = Txt_address.Text;
                    DatalistEdit da = new DatalistEdit();
                    int r = da.UpdateStorage(Id, a_ulname, a_ufname, a_phone, a_address);

                }
               
            }
            catch (Exception s)
            {
                Response.Write(s.Message .ToString ());
            }
        }

为什么我的TextBox Txt_au_lname = (TextBox)e.Item.FindControl("Txt_au_lname");这段代码,获取不到改变后的TextBox中的值啊?
求助!!!
[解决办法]
关注中。。。
[解决办法]
 if (e.Item.ItemType == ListItemType.EditItem)
  {

这个去掉,然后断点跟一下
[解决办法]
for(int i=0;i<datalist.items.count;i++)
{
   TextBox Txt_au_lname = datalist.Item[i].FindControl("Txt_au_lname") as TextBox 
}
这样试试

[解决办法]
这台机子没环境楼主帮补到你了

调试下看看
[解决办法]
AutoPostBack 回发服务器  晕
[解决办法]

引用:
问题解决了,一样谢谢大家的关注

解决办法是在TextBox的代码框里加一个属性,AutoPostBack="True"
<asp:TextBox ID="Txt_phone" Text='<%#Eval("phone")%>' runat="server" AutoPostBack="True"></asp:TextBox>

然后加载Page_Load时,用if语句判断一下就行了
……


加载时机问题。

将下面代码封装给一个函数

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
           BindDataList();
     }
}

public void BindDataList()
{
       DatalistEdit da = new DatalistEdit();
       DataList1.DataSource = da.SearchAll();
       DataList1.DataBind();
}

protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
       //......
       BindDataList();
}


[解决办法]
引用:

问题解决了,一样谢谢大家的关注

解决办法是在TextBox的代码框里加一个属性,AutoPostBack="True"
<asp:TextBox ID="Txt_phone" Text='<%#Eval("phone")%>' runat="server" AutoPostBack="True"></asp:TextBox>

然后加载Page_Load时,用if语句判断一下就行了
……


那应该是你代码写的有问题


[解决办法]
DataList ItemsList = (DataList)source;
这是干啥的。
<asp:TextBox ID="Txt_phone" Text='<%#Eval("phone")%>' runat="server" AutoPostBack="True"></asp:TextBox>
居然还有AutoPostBack="True"

照这个写
[解决办法]

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DatalistEdit da = new DatalistEdit();
                DataList1.DataSource = da.SearchAll();
                DataList1.DataBind();
            }
        }

写在这里也行

protected void Page_PreRender(object sender, EventArgs e)
        {
            DatalistEdit da = new DatalistEdit();
            DataList1.DataSource = da.SearchAll();
            DataList1.DataBind();
        }

热点排行