Datalist_itemCommand不执行

u010759692 2013-10-12 10:31:19
目的:点击Datalist里的linkbutton,跳转到相对应的页面。

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bind();
}
}
void bind()
{
string str = @"Data Source=.\sqlexpress;Initial Catalog=News;Integrated Security=True";
SqlConnection conn = new SqlConnection(str);
string sqlStr = "select * from News";
SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn);
DataSet ds = new DataSet();
sda.Fill(ds, "nid");
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["nid"].DefaultView;
this.DataList1.DataSource = pds;
this.DataList1.DataBind();
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
Entity.News n = new News();
n.Nid = ((Label)(e.Item.FindControl("nidLabel"))).Text;
int r = Business.NewsBusiness.GetCommentAmount(n);
Label lbl = (Label)e.Item.FindControl("lblInfo");
if (lbl != null)
{
lbl.Text = r.ToString();
}
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
Entity.News n = new News();
n.Nid = ((Label)(e.Item.FindControl("nidLabel"))).Text;
string r = Business.NewsBusiness.GetNewsUrl(n);
if (e.CommandName == "detail")
{
((LinkButton)(e.Item.FindControl("LinkButton1"))).PostBackUrl = r;
}
Session["nid"] = ((Label)(e.Item.FindControl("nidLabel"))).Text;
}

在网上查了下,if (!Page.IsPostBack)判断了,绑定的也没错,但不执行。
...全文
215 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhong418522 2013-12-24
  • 打赏
  • 举报
回复
LZ找到答案了吗?求分享
u010759692 2013-10-13
  • 打赏
  • 举报
回复
引用 2 楼 hcxyhxh 的回复:
你在条件判断里面,设置了PostBackUrl,并没有触发要跳转啊。 应该点第二次的时候才 会跳吧。 个人认为,你应该在绑定阶段,就把linkbutton的PostBackUrl的值给绑定进去,那么后面点击了才会跳转吧. 个人看法..
的确,我也发现了这个问题。 但是我没想通怎么在绑定阶段,把linkbutton的PostBackUrl的值给绑定进去?
gclol 2013-10-13
  • 打赏
  • 举报
回复
引用 6 楼 u010759692 的回复:
[quote=引用 4 楼 gclol 的回复:] string r = Business.NewsBusiness.GetNewsUrl(n); if (e.CommandName == "detail") { ((LinkButton)(e.Item.FindControl("LinkButton1"))).PostBackUrl = r; } 把这些代码放到你的 DataList1_ItemDataBound 方法中,就是在绑定阶段设置linkbutton的PostBackUrl
不行,System.Web.UI.WebControls.DataListItemEventArgs”不包含“CommandName”的定义。[/quote] 把if语句去掉不就行了,数据绑定阶段又不用判断用户执行了哪种操作
u010759692 2013-10-13
  • 打赏
  • 举报
回复
引用 5 楼 hcxyhxh 的回复:
((LinkButton)(e.Item.FindControl("LinkButton1"))).PostBackUrl = r; 把这个放你绑定方法里面就可以了吧。
应该不可以吧,r没有相应的值。
u010759692 2013-10-13
  • 打赏
  • 举报
回复
引用 4 楼 gclol 的回复:
string r = Business.NewsBusiness.GetNewsUrl(n); if (e.CommandName == "detail") { ((LinkButton)(e.Item.FindControl("LinkButton1"))).PostBackUrl = r; } 把这些代码放到你的 DataList1_ItemDataBound 方法中,就是在绑定阶段设置linkbutton的PostBackUrl
不行,System.Web.UI.WebControls.DataListItemEventArgs”不包含“CommandName”的定义。
hcxyhxh 2013-10-13
  • 打赏
  • 举报
回复
((LinkButton)(e.Item.FindControl("LinkButton1"))).PostBackUrl = r; 把这个放你绑定方法里面就可以了吧。
gclol 2013-10-13
  • 打赏
  • 举报
回复
string r = Business.NewsBusiness.GetNewsUrl(n); if (e.CommandName == "detail") { ((LinkButton)(e.Item.FindControl("LinkButton1"))).PostBackUrl = r; } 把这些代码放到你的 DataList1_ItemDataBound 方法中,就是在绑定阶段设置linkbutton的PostBackUrl
hcxyhxh 2013-10-12
  • 打赏
  • 举报
回复
你在条件判断里面,设置了PostBackUrl,并没有触发要跳转啊。 应该点第二次的时候才 会跳吧。 个人认为,你应该在绑定阶段,就把linkbutton的PostBackUrl的值给绑定进去,那么后面点击了才会跳转吧. 个人看法..
lovebaby 2013-10-12
  • 打赏
  • 举报
回复
分步调试你的DataList1_ItemCommand,看执行到哪一步了

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧