[100分求助]关于DataList的相关内容修改后,无法拿到的问题?
请仔细往下看,不仅仅是IsPostBack中绑定的问题。
问题简述:
在页面中有一DataList,对其<ItemTemplate>和<EditItemTemplate>都做了规定,大致如附录A:
其中在EditItemTemplate中主要是通过一个TextBox,拿到更改后的新数值。
可是,每次在DataList1_UpdateCommand命令中通过
param[1] =((TextBox)e.Item.FindControl("Textbox0")).Text; 拿到的都是绑定的值,而不是更改后的值。
试过的方法:
经过在论坛的搜索和QuickStart中的示例,发现在Page_Load中需要将相关的绑定代码放在if(!Page.IsPostBack){DataBindJob();}。见附录B:我的Page_Load函数。
但是,这样做了之后,点击“编辑按钮”,整个DataList就消失了,也就是没有Bind上任何内容?不知为何?
因为我的DataBind是需要从Request.QueryString中得到参数的,见附录B。所以我仿照QuickStart的示例把所有的绑定操作放在一个Popuplist函数中了。
望大侠们不吝赐教。解决后立即给分,不够再加100分。
附录A:DataList的相关模板
<ItemTemplate>
<b>姓名: </b>
<%# DataBinder.Eval(Container.DataItem, "姓名") %> <br>
//...
<asp:linkbutton CommandName="Edit" runat="server" ID="editButton">
<img border="1" src="edit.gif">
</asp:linkbutton>
</ItemTemplate>
<EditItemTemplate>
<b>姓名: </b>
<asp:TextBox id="Textbox0" AutoPostBack=True Text='<%# DataBinder.Eval(Container.DataItem, "姓名") %>' runat="server"/>
<br>
<asp:linkbutton CommandName="Update" runat="server" ID="updateButton">
<img border="0" src="save.gif">
</asp:linkbutton>
</EditItemTemplate>
附录B:我的Page_Load函数
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
this.PopulateList();
}
}
附录C: 绑定动作函数
private void PopulateList()
{
String id = Request.QueryString["clientid"];
//...
String queryString = "SELECT * FROM 客户列表 WHERE 客户列表.编号=" + id ;
OleDbDataAdapter myCommand = new OleDbDataAdapter(queryString, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "客户列表");
DataList1.DataSource = ds.Tables["客户列表"].DefaultView;
DataList1.DataBind();
myConnection.Close();
}