Javascript 在其他函数之前从GridView更改对SelectedIndex的调用
我有两种观点。用户可以从第一个GridView中选择一行,并显示基于所选GridView ID的列表 第一格: 第二个网格: 第一个GridView的代码:Javascript 在其他函数之前从GridView更改对SelectedIndex的调用,javascript,c#,jquery,asp.net,gridview,Javascript,C#,Jquery,Asp.net,Gridview,我有两种观点。用户可以从第一个GridView中选择一行,并显示基于所选GridView ID的列表 第一格: 第二个网格: 第一个GridView的代码: <asp:GridView style="width:75%" ID="gvCVRT" ShowHeaderWhenEmpty="true" CssClass="tblResult
<asp:GridView style="width:75%"
ID="gvCVRT"
ShowHeaderWhenEmpty="true"
CssClass="tblResults"
runat="server"
OnSelectedIndexChanged="gridviewParent_SelectedIndexChanged"
OnRowDataBound="gvCVRT_RowDataBound"
DataKeyField="ID"
DataKeyNames="ChecklistID"
AutoGenerateColumns="false"
allowpaging="false"
AlternatingRowStyle-BackColor="#EEEEEE">
<HeaderStyle CssClass="tblResultsHeader" />
<Columns>
<asp:BoundField DataField="ChecklistID" HeaderText="ID" ></asp:BoundField>
<asp:CommandField ShowSelectButton="True" HeaderText="Select" />
<asp:BoundField DataField="ChecklistDate" HeaderText="Checklist Date" dataformatstring="{0:dd/MM/yyyy}"></asp:BoundField>
<asp:BoundField DataField="User" HeaderText="User" ></asp:BoundField>
<asp:BoundField DataField="Note" HeaderText="Note" ></asp:BoundField>
<asp:TemplateField HeaderText="Delete" ItemStyle-CssClass="tblRowDelete">
<ItemTemplate>
<asp:LinkButton ID="btnDelete"
runat="server" OnClientClick="event.stopPropagation()" OnClick="btnDeleteCVRT_Click"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
gridviewParent\u SelectedIndex的代码已更改:
抱歉,代码太多了,但我想确切地说明发生了什么。当我将代码设置为int index=gv.Columns.HeaderIndexSelect时;它首先进入javascript函数ShowAddEditCVRT,该函数尝试显示第二个网格divCVRTDetails。但是我需要先运行gridviewParent\u SelectedIndexChanged方法,因为这会使用从第一个网格中选择的ID绑定第二个网格
我可以首先绑定第二个网格的唯一方法是将代码更改为:int index=gv.Columns.HeaderIndexChecklist Date;。
因此,用户必须先单击select以绑定网格,然后单击date单元格以显示网格
因此,我的问题是,在调用javascript函数之前,是否还要运行gridviewParent\u SelectedIndexChanged方法?请参阅下面的链接以了解我在哪里找到此信息的更多详细信息 绑定gridview后,可以从服务器端添加javascript
protected void Page_Load(object sender, EventArgs e) {
String script = @"<script language=""Javascript"">
$(".gvCVRTRow").off();
$(".gvCVRTRow").click(function (e) {
ShowAddEditCVRT(this, "Edit");
});
function ShowAddEditCVRT(sender, AddEdit) {
$("#divCVRTDetails").fadeIn(300);
}
</script>";
Page.RegisterClientScriptBlock("experiment", script);
gvCVRT.Attributes.Add("DataBound", "TestJScript()");
我相信这会取代你的FireJavaScriptCallBackstardPostBack
编辑
我更改了代码以更好地匹配您提供的内容以及代码的放置位置。我认为它应该在页面加载下运行。我还更改了gvCVRT.Attributes.Add,使其能够在gvCVRT数据绑定时运行javascript。对此的回答是,我使用FireJavascriptCallbackmyFunction;调用javascript;;然后把我需要的javascript代码放到这个函数中 FireJavascriptCallback是一个函数:
protected void FireJavascriptCallback(string JSFunctionName)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "Callback", JSFunctionName, true);
}
这很奇怪,使用我提供的链接上的通用测试表单对我有效。你是否直接从我发布的内容中复制和粘贴?另外,您是否在运行时收到错误?是的,我直接从您的代码复制并粘贴了错误。首先,我在常量和中获取错误换行符;预料之中,所以我把所有的东西移到了一条线上。但是,$.gvCVRTRow和Edit以及任何使用“到目前为止,我还没有找到问题所在”的部分仍然会出现错误,如果javascript调用的函数是在C中完成的,然后由javascript函数调用,会更容易吗?看看这个链接@user123456789您可以尝试的另一件事是用单引号替换javascript中的所有双引号,因为js对它们的处理方式相同。@user123456789 FireJavascriptCallback在哪里?我一直在用谷歌搜索,但找不到。还有,你的答案不是你已经在做的吗?我没有足够的代表在你的回答下发表评论。
$(".gvCVRTRow").off();
$(".gvCVRTRow").click(function (e) {
ShowAddEditCVRT(this, "Edit");
});
function ShowAddEditCVRT(sender, AddEdit) {
$("#divCVRTDetails").fadeIn(300);
}
protected void Page_Load(object sender, EventArgs e) {
String script = @"<script language=""Javascript"">
$(".gvCVRTRow").off();
$(".gvCVRTRow").click(function (e) {
ShowAddEditCVRT(this, "Edit");
});
function ShowAddEditCVRT(sender, AddEdit) {
$("#divCVRTDetails").fadeIn(300);
}
</script>";
Page.RegisterClientScriptBlock("experiment", script);
gvCVRT.Attributes.Add("DataBound", "TestJScript()");
protected void FireJavascriptCallback(string JSFunctionName)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "Callback", JSFunctionName, true);
}