日期:2014-05-18  浏览次数:20520 次

自动生成的超链接 如何触发服务端的代码 不用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属性。。。。
------解决方案--------------------
探讨
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