【发布时间】:2016-04-05 11:40:29
【问题描述】:
我已经给出了一项任务,即根据数据库中的 0 和 1 状态隐藏和显示包含按钮的 div,这将由管理员设置要向相关用户显示和隐藏哪个 div;
问题是,前端 hideid() 函数在 Code behind 函数 getpermission() 之后执行,所以分配给 hiddenfield 的最后一个 div id 只有那个 div 隐藏,其余保持不隐藏
前端:-
<div class="row">
<div id="dbtn1" class="col-xs-12 col-md-3 col-sm-6 ">
<asp:Button ID="btn1" CssClass=" thumbnail shadow tile tile-small btn-block tilepink " ForeColor="White" Font-Bold="true" Font-Size="Larger" Text="Add Party" Width="100%" runat="server"></asp:Button>
</div>
<div id="dbtn2" class="col-xs-12 col-md-3 col-sm-6 ">
<asp:Button ID="btn2" CssClass=" thumbnail shadow tile tile-small btn-block tilegray " ForeColor="White" Font-Bold="true" Font-Size="Larger" Text="Order" Width="100%" runat="server"></asp:Button>
</div>
<div id="dbtn3" class="col-xs-12 col-md-3 col-sm-6 ">
<asp:Button ID="btn3" CssClass=" thumbnail shadow tile tile-small btn-block tile-blue masterheader " ForeColor="White" Font-Bold="true" Font-Size="Larger" Text="Purchase" Width="100%" runat="server"></asp:Button>
</div>
<div id="dbtn4" class="col-xs-12 col-md-3 col-sm-6 ">
<asp:Button ID="btn4" CssClass=" thumbnail shadow tile tile-small btn-block tilelightred" ForeColor="White" Font-Bold="true" Font-Size="Larger" Text="Solution" Width="100%" runat="server"></asp:Button>
</div>
<asp:HiddenField ID="HiddenFieldID" runat="server" />
</div>
jQuery 脚本:
<script>
function hideid() {
var av = $('[id$=HiddenFieldID]').val();
$('#' + av).css("display", "none");
};
</script>
现在后端代码:
public void getpermission()
{
if(HttpContext.Current.User.Identity.IsAuthenticated)
{
string username=HttpContext.Current.User.Identity.Name;
System.Data.DataTable dt = DML.gettable("select l.`btn1`, l.`btn2`, l.`btn3`, l.`btn4`, l.`btn5`, l.`btn6`, l.`btn7`, l.`btn8`, l.`btn9`, l.`btn10`, l.`btn11`, l.`btn12`, l.`btn13`, l.`btn14`, l.`btn15`, l.`btn16` from menu l right join login m on m.id=l.Userid where m.userName='" + username + "'");
if (dt.Rows.Count > 0)
{
for (int i = 2; i < dt.Columns.Count; i++)
{
int status=Convert.ToInt32(dt.Rows[0][i].ToString());
if (status==1)
{
string columnname="d"+dt.Columns[i].ToString();
HiddenFieldID.Value = columnname;
ClientScript.RegisterStartupScript(this.GetType(), "getid", "hideid()", true);
}
}
}
}
【问题讨论】:
-
不确定您的操作是否正确?为什么不尝试让所有 div runat=server 并隐藏/显示后面的代码?
-
让我知道如何在(for 循环)中找到随机 div 或按钮 div 的 ID 可以是任何东西
-
目前我可以看到你有 4 个 div。它可能不止于此。所以没有动态ID。如果是这样,请在此处发布您的确切代码。
-
@PiyushKhatri 有 16 个 div 包含 16 个按钮,管理员可以在数据库中将任何 div 的值设置为 1,因此当页面加载时它会检查所有列的值 1,div id 与 columnname 相同在数据库中,所以这里循环一一检查哪个div有1个值并调用jquery函数来隐藏那个div,但是问题是循环不是在函数后面的代码停止执行后一一调用jquery函数。我已经发布了所有所有 16 个 div 旁边的代码我只发布了 4 个以提高可读性
-
好的。明白了。所以我更喜欢你使用后面的代码而不是 jquery。在后面的代码中,您将使用 Page.FindControl 方法找到所有 div。就像循环 1 到 16,并使用 page.findcontrol("div" + i)。并从后面的代码中隐藏/显示 div。
标签: javascript c# jquery html asp.net