为什么c#功能不起作用

时间:2011-02-22 13:11:01

标签: c# javascript asp.net

if (e.Row.RowType == DataControlRowType.DataRow)
{
   // if no link are presen the cell, 
   // we add the functionnality to select the row on the cell with a click
   cell.Attributes.Add("onclick", "x();");              

   // here we add the command to postback when the user click somewhere in the cell
   cell.Style.Add(HtmlTextWriterStyle.Cursor, "pointer");
   cell.Attributes.Add("title", "Select");
}

实际上当我调用在c#中创建的函数x没有执行但是我在javascript中声明它正在执行什么问题?请告诉我

4 个答案:

答案 0 :(得分:2)

您正在向HTML添加onclick属性,这只能调用javascript函数,而不是服务器端c#函数。

自从我使用WebForms以来已经有一段时间了,但据我记得,'cell'对象没有服务器端点击事件。您将不得不添加一个Button / LinkBut​​ton或其他东西,并附加一个事件处理程序。

答案 1 :(得分:1)

我假设整个源代码位于GridView的RowCreated处理程序中,并且应该允许通过行单击选择行。如果我是正确的尝试这个(从VB转换):

ASPX:

<asp:GridView ID="GridView1" runat="server" OnRowCreated="GridView1_RowCreated" onselectedindexchanged="GridView1_SelectedIndexChanged" onselectedindexchanging="GridView1_SelectedIndexChanging" />

代码隐藏

private void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) {
        e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';";
        e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
        e.Row.ToolTip = "click to select row";
        e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + e.Row.RowIndex);
    }
}

查看here,了解有关GridView中SelectedIndexChanged-和SelctedIndexChanging-Events的更多信息。

答案 2 :(得分:0)

您可以通过使用WebMethod属性修饰方法,使用Ajax和Javascript调用代码隐藏页面方法。有一个教程here来做它

答案 3 :(得分:0)

从客户端调用服务器端功能的唯一方法是:

  • 帖子
  • AJAX(XmlHttpRequest)
  • 回发

希望这会有所帮助。