前台页面是:
<form id="Form1" method="post" runat="server">
<asp:repeater id="myRepeater" runat="server">
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "au_lname") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "address") %></td>
<td><asp:Button ID="btBuy" Text='<%# DataBinder.Eval(Container.DataItem,"au_lname")%>' CommandArgument='<%# DataBinder.Eval(Container.DataItem,"au_lname")%>' runat="server">
</asp:Button></td>
</tr>
</ItemTemplate>
<HeaderTemplate>
<table border="1">
<tr>
<td>作者</td>
<td>地址</td>
<td>联系</td>
</tr>
</HeaderTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
</form>代码如下:
private void Page_Load(object sender, System.EventArgs e) {
// 在此处放置用户代码以初始化页面
if(!IsPostBack){
OleDbConnection myCon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("data/ime.mdb"));
myCon.Open();
OleDbCommand myCmd = new OleDbCommand("select * from Authors",myCon);
this.myRepeater.DataSource = myCmd.ExecuteReader();
this.myRepeater.DataBind();
myCon.Close();
}
}private void myRepeater_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) {
Response.Write(e.CommandArgument.ToString());
}=========================================================================
问题是:为何非要把代码放在!IsPostBack中呢?
我的理解是:去掉IsPostBack,即使点击Button按钮,页面回发了,Repeater控件值从数据库重新绑定了,那CommandArgument的值还在啊?
但实际情况:我去掉IsPostBack后,点击Button按钮,Response.Write(e.CommandArgument.ToString());这条语句的值显示不出来。
到底是怎么回事啊,我想破脑袋也想不通这种机制到底是怎么回事?
<form id="Form1" method="post" runat="server">
<asp:repeater id="myRepeater" runat="server">
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "au_lname") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "address") %></td>
<td><asp:Button ID="btBuy" Text='<%# DataBinder.Eval(Container.DataItem,"au_lname")%>' CommandArgument='<%# DataBinder.Eval(Container.DataItem,"au_lname")%>' runat="server">
</asp:Button></td>
</tr>
</ItemTemplate>
<HeaderTemplate>
<table border="1">
<tr>
<td>作者</td>
<td>地址</td>
<td>联系</td>
</tr>
</HeaderTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
</form>代码如下:
private void Page_Load(object sender, System.EventArgs e) {
// 在此处放置用户代码以初始化页面
if(!IsPostBack){
OleDbConnection myCon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("data/ime.mdb"));
myCon.Open();
OleDbCommand myCmd = new OleDbCommand("select * from Authors",myCon);
this.myRepeater.DataSource = myCmd.ExecuteReader();
this.myRepeater.DataBind();
myCon.Close();
}
}private void myRepeater_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) {
Response.Write(e.CommandArgument.ToString());
}=========================================================================
问题是:为何非要把代码放在!IsPostBack中呢?
我的理解是:去掉IsPostBack,即使点击Button按钮,页面回发了,Repeater控件值从数据库重新绑定了,那CommandArgument的值还在啊?
但实际情况:我去掉IsPostBack后,点击Button按钮,Response.Write(e.CommandArgument.ToString());这条语句的值显示不出来。
到底是怎么回事啊,我想破脑袋也想不通这种机制到底是怎么回事?
解决方案 »
- 100分请教问题。。(在线等)。各位帮帮忙吧。。。很简单的问题,问题是我不会!
- 两个GridView中数据互相交换的问题
- 有一弹出窗口的问题请教?进来看看吗
- 请问我在用webdiyer 的aspnetpager (4.3.2)时,报:未能从程序集加载,Wuqi.Webdiyer.AspNetPager
- 求一个师傅
- asp页面代码中的<%...%>到了asp.net中如何处理?
- 诚心请教问题
- System.Data.OleDb.OleDbException: UPDATE 语句的语法错误。
- 思归……请您帮忙看一下这个链接问题
- 无法在服务器上启动调试的问题
- image显示图片的问题,谢谢帮忙:有点急!!!在线等
- ASP.NET中用GDI+画的图能不能在图上设热区,也就是根据鼠标的位置显示数值
例如你一開始要填充DropDownList,當然只是填充一次就夠了,不用每觸發一次事件就填充一次,這樣效能會很低的
private void myRepeater_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) {
Response.Write(e.CommandArgument.ToString());
}
这个事件怎么处理不了?
还有,居然是学MS的工具,就不要问那么多原因,知道是这么回事就好了.不然就可能被那些问题折磨死.
但页面回发后,如果重新绑定数据到DataList控件,DataList_EditCommand事件则是可以继续执行的???(我设断点看了一下,DataList_EditCommand事件可以继续执行)