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中声明它正在执行什么问题?请告诉我
答案 0 :(得分:2)
您正在向HTML添加onclick属性,这只能调用javascript函数,而不是服务器端c#函数。
自从我使用WebForms以来已经有一段时间了,但据我记得,'cell'对象没有服务器端点击事件。您将不得不添加一个Button / LinkButton或其他东西,并附加一个事件处理程序。
答案 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)
从客户端调用服务器端功能的唯一方法是:
希望这会有所帮助。