C# 链接按钮有一些问题

C# 链接按钮有一些问题,c#,javascript,asp.net,gridview,linkbutton,C#,Javascript,Asp.net,Gridview,Linkbutton,我有一个ASP.NET应用程序,其中包括一个gridview。此gridview包含4个复选框模板列和2个链接按钮模板列。如果我单击第一个复选框,那么两个链接按钮都应该启用,否则它们应该处于禁用模式。此功能运行良好。但我的问题是,在加载表单时,它将检查第一列是否被选中。如果未选中该复选框,链接按钮将处于禁用模式。但选中此复选框后,它将被启用,但没有指向重定向的链接。我的代码如下所示 protected void DGDocuments_ItemDataBound(object sender,

我有一个ASP.NET应用程序,其中包括一个gridview。此gridview包含4个复选框模板列和2个链接按钮模板列。如果我单击第一个复选框,那么两个链接按钮都应该启用,否则它们应该处于禁用模式。此功能运行良好。但我的问题是,在加载表单时,它将检查第一列是否被选中。如果未选中该复选框,链接按钮将处于禁用模式。但选中此复选框后,它将被启用,但没有指向重定向的链接。我的代码如下所示

 protected void DGDocuments_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemIndex == -1) return;

        BindCheckBox(e.Item, "chkRead");
        BindCheckBox(e.Item, "chkCreate");
        BindCheckBox(e.Item, "chkUpdate");
        BindCheckBox(e.Item, "chkDelete");

        CheckBox chkID = (CheckBox)e.Item.FindControl("chkRead");
        if (!chkID.Checked)
        {
            LinkButton lnkPermission = (LinkButton)e.Item.FindControl("lnkFieldPermssion");
            LinkButton lnkSetRules = (LinkButton)e.Item.FindControl("lnkAddRules");

            lnkPermission.Enabled = false;
            lnkSetRules.Enabled = false;
        }
    }
在设计器页面中:

 <asp:TemplateColumn HeaderText="Read" ItemStyle-HorizontalAlign="Center">
     <ItemTemplate>
         <asp:CheckBox ID="chkRead" runat="server" Text='<%# Eval("Read") %>' onclick="javascript:EnablePermissoin(this,5,6);" />
     </ItemTemplate>
 </asp:TemplateColumn>
 <asp:TemplateColumn HeaderText="Rules" ItemStyle-HorizontalAlign="Center" ItemStyle-Font-Bold="true">
     <ItemTemplate>
         <asp:LinkButton ID="lnkAddRules" Text="Add Rules" runat="server"  CommandName="cmdSetRules"  />
     </ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Field Permission" ItemStyle-HorizontalAlign="Center" ItemStyle-Font-Bold="true">
    <ItemTemplate>
        <asp:LinkButton ID="lnkFieldPermssion" Text="Set" runat="server" CommandName="cmdFieldPermission" />
    </ItemTemplate>
</asp:TemplateColumn>

如果我在加载时禁用链接按钮,这将是从视图源获得的代码:

<td align="center" style="font-weight:bold;">
    <a id="DGDocuments_ctl23_lnkAddRules" disabled="disabled">Add Rules</a>
</td><td align="center" style="font-weight:bold;">
    <a id="DGDocuments_ctl23_lnkFieldPermssion" disabled="disabled">Set</a>
</td>

添加规则
设置

请帮我解决这个问题。提前感谢。

禁用LinkButton服务器端时,它似乎不会为a标记生成onclick事件处理程序。因此,一旦通过JavaScript启用LinkButton,它就不知道如何发回。我建议要么正常呈现LinkButton,然后通过JavaScript禁用它,要么将复选框的AutoPostback设置为True,然后执行启用服务器端操作。

看起来,禁用LinkButton服务器端时,它不会为a标记生成onclick事件处理程序。因此,一旦通过JavaScript启用LinkButton,它就不知道如何发回。我建议您要么正常呈现LinkButton,然后通过JavaScript禁用它,要么将复选框的AutoPostback设置为True,然后执行服务器端启用操作。

您将不得不重新考虑您的解决方案。LinkButtons只是在HTML中生成一个标记。标记不能被“禁用”,因此当您将LinkButton设置为禁用时,ASP.NET会从标记中删除HREF,因此单击它不会执行任何操作。我应该指出,您用于禁用标记的JavaScript不起作用-它使标记看起来被禁用,但仍然可以单击


为了在客户端工作,您需要使用JavaScript函数在标记中添加和删除HREF。其他选项包括在服务器端执行所有操作,以便ASP.NET处理HREF的删除和添加,或者切换到其他控件,例如可以启用和禁用的常规ASP:按钮。

您将不得不重新考虑您的解决方案。LinkButtons只是在HTML中生成一个标记。标记不能被“禁用”,因此当您将LinkButton设置为禁用时,ASP.NET会从标记中删除HREF,因此单击它不会执行任何操作。我应该指出,您用于禁用标记的JavaScript不起作用-它使标记看起来被禁用,但仍然可以单击


为了在客户端工作,您需要使用JavaScript函数在标记中添加和删除HREF。其他选项包括在服务器端执行所有操作,以便ASP.NET处理HREF的删除和添加,或者切换到其他控件,例如可以启用和禁用的常规ASP:按钮。

我看不出在哪里设置链接按钮的重定向URL。:)我设置了链接按钮的命令名。如果我单击链接,它将调用一个方法重定向到下一页。我看不出你在哪里设置链接按钮的重定向URL…:)我设置了链接按钮的命令名。如果我点击链接,它将调用一个方法重定向到下一页。
<td align="center" style="font-weight:bold;">
    <a id="DGDocuments_ctl23_lnkAddRules" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;DGDocuments$ctl23$lnkAddRules&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))">Add Rules</a>
</td><td align="center" style="font-weight:bold;">
    <a id="DGDocuments_ctl23_lnkFieldPermssion" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;DGDocuments$ctl23$lnkFieldPermssion&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))">Set</a>
</td>
<td align="center" style="font-weight:bold;">
    <a id="DGDocuments_ctl23_lnkAddRules" disabled="disabled">Add Rules</a>
</td><td align="center" style="font-weight:bold;">
    <a id="DGDocuments_ctl23_lnkFieldPermssion" disabled="disabled">Set</a>
</td>