我试图用javascript调用codebehind函数。我需要使用gridview进行一些操作。 这是我的javascript:
function hideColumn() {
var gridrows = $("#GridViewHdcvi tbody tr");
AddTeklif.RemoveTextBoxes();
for (var i = 0; i < gridrows.length; i++) {
gridrows[i].cells[5].style.display = "none";
}
return false;
};
我的代码隐藏:
[WebMethod]
public static void RemoveTextBoxes()
{
foreach (GridViewRow row in GridViewHdcvi.Rows)
{
TextBox txb = (TextBox)row.FindControl("txtAdet");
string adet = txb.Text;
txb.Visible = false;
Label lbl = (Label)row.FindControl("LblAdet");
lbl.Text = adet+" $";
}
}
我有一个错误,例如'GridViewHdcvi.Rows'中的非静态字段,方法或属性CRM.AddTeklif.GridViewHdcvi'需要对象引用。当我使方法的名称'public void RemoveTextBoxes()'错误消失但方法不起作用,因为它不是静态的。
答案 0 :(得分:1)
似乎你正在混合两个不同的概念。 JavaScript从浏览器运行,无法访问您的服务器代码。你在这里做的是试图在你的页面被渲染到浏览器时调用WebMethod。
更好的方法是将您的RemoveTextBoxes方法转换为jQuery,因为您要做的就是修改DOM。
答案 1 :(得分:0)
这就是你如何从后面的代码中调用你的JavaScript函数hideColumn()。
将此项放在要调用javascript函数的方法中。
Page.ClientScript.RegisterStartupScript(this.GetType(), "hideColumn", "hideColumn(;", true);
要从javascript函数调用代码隐藏,你必须玩一些技巧。
1。)创建一个隐藏的按钮控件。你必须在CssClass中隐藏它
<asp:Button ID="hdnButton" runat="server" CssClass="hidden" />
.hidden {
display: none;
}
2。)在您的代码中创建一个单击hdnButton方法
3。)从您的javascript中调用隐藏按钮点击事件
function CallCodeBehind() {
document.getElementById('<%= hdnButton.ClientID%>').click();
}