自动生成的超链接 如何触发服务端的代码 不用Ajax
C# code
protected void gv_list_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string strContractID = DataBinder.Eval(e.Row.DataItem, "ContractID").ToString();
string strPlanningID = DataBinder.Eval(e.Row.DataItem, "PlanningID").ToString();
e.Row.Cells[6].Text = string.Format("<a href='P25010106.aspx?contractid={0}&planningid={1}'>成本预算</a>", strContractID, strPlanningID);
e.Row.Cells[7].Text = string.Format("<a href='P25010107.aspx?contractid={0}&planningid={1}'>资金预算</a>", strContractID, strPlanningID);
}
}
private void RedirectToUrl(string url, string page)
{
// 将需要保存状态的控件压入状态堆栈中
KRSaveState(QCTop, PagerLine);
// 要跳转的页面
url = page + url;
Response.Redirect(url);
}
如何在gv_list_RowDataBound生成超链接时,赋予执行RedirectToUrl方法,不用Ajax
就是当我点击“成本预算”时,可以执行RedirectToUrl方法
------解决方案--------------------不用ajax啊,还是用吧
------解决方案--------------------
那你就不能添加静态html字符串,需要添加LinkButton控件:
LinkButton linkButton = new LinkButton();
e.Row.Cells[6].Controls.Add(linkButton);
//设置linkButton的相关属性
linkButton.Click += new EventHandler(linkButton_Click);
void linkButton_Click(object sender, EventArgs e)
{
//执行RedirectToUrl方法
}
------解决方案--------------------你不去向服务端提出请求,怎么能触发服务端的事件呢
服务端就是一个受,你得强势的提出,他才能默默的承受并回应
------解决方案--------------------最好不要动态添加控件,你可以事先放好,隐藏。需要用时再显示出来。这样处理起来比较方便。
------解决方案--------------------要不就AJAX 要不就全JS来完成应该也是可以的
------解决方案--------------------1.强烈建议用AJAX
2.建议不要走到后台生成,又要响应事件,还不想AJAX的地步,
你的操作完全可以先在前台放个LinkButton按钮,
RowDataBound事件中再去用FindControl找到这个LinkButton
再给他赋路转路径、显示文本等属笥
如果LinkButton要响应事件,可以给它CommandName,CommandArgument属性。。。。
------解决方案--------------------
------解决方案--------------------盗链 著名的_doPostBack函数
当然,你也可以自己模仿写一个。
基本原理就是 客户端触发JS事件 执行JS函数,然后传递事件源ID等信息
做一个submit表单提交动作 后台接受到请求 根据参数来执行相应的代码
可以参考我的博客文章
http://blog.csdn.net/dinglang_2009/article/details/7264212
------解决方案--------------------http://blog.csdn.net/dinglang_2009/article/details/7264212