Javascript 在其他函数之前从GridView更改对SelectedIndex的调用

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

我有两种观点。用户可以从第一个GridView中选择一行,并显示基于所选GridView ID的列表

第一格:

第二个网格:

第一个GridView的代码:

<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);
    }