简体   繁体   English

如何使用 C# 隐藏面板?

[英]How do I hide a panel using C#?

I used Gridview to display data.我使用 Gridview 来显示数据。 Under Gridview I had put one label for 'question', four labels for 'options', one label for 'correct answer' and one label for 'explanation' of answer of the question.在 Gridview 下,我为“问题”贴了一个标签,为“选项”贴了四个标签,为“正确答案”贴了一张标签,为问题的答案贴了一张标签。

Label for correct Answer and explanation is under a panel.正确答案和解释的标签位于面板下方。 This panel should show when user click on 'show answer' button and hide when again click on that button.该面板应在用户单击“显示答案”按钮时显示,并在再次单击该按钮时隐藏。 Under page load method I wrote "anspanel.Style.Add("display", "none");"在页面加载方法下我写了“anspanel.Style.Add("display", "none");” to hide the panel but this line is showing syntax error:-"name 'anspanel' doesn't exist in the current context".隐藏面板,但此行显示语法错误:-“当前上下文中不存在名称'anspanel'”。 I can't figure out why.我不明白为什么。

Here is what I have tried :-这是我尝试过的:-

.aspx.cs =: .aspx.cs =:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;


public partial class Student_Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        anspanel.Style.Add("display", "none");
        if (!IsPostBack)
        {
            GridView1.DataSource = GetData("SELECT top 2 Question, Option1, Option2, Option3, Option4, CorrectAns, Explanation FROM Questions");
            GridView1.DataBind();
        }
    }
}

private DataSet GetData(string query)
{
    string conString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlCommand cmd = new SqlCommand(query);
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con;
            sda.SelectCommand = cmd;
            using (DataSet ds = new DataSet())
            {
                sda.Fill(ds);
                return ds;
            }
        }
    }
}
}

 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Student_Test" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.8.3/themes/base/jquery-ui.css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript" src="http://code.jquery.com/ui/1.8.3/jquery-ui.js"></script> <script type="text/javascript"> var currentTab = 0; $(function () { $("#tabs").tabs({ select: function (e, i) { currentTab = i.index; } }); }); $("#btnNext").live("click", function () { var tabs = $('#tabs').tabs(); var c = $('#tabs').tabs("length"); currentTab = currentTab == (c - 1) ? currentTab : (currentTab + 1); tabs.tabs('select', currentTab); $("#btnPrevious").show(); if (currentTab == (c - 1)) { $("#btnNext").hide(); } else { $("#btnNext").show(); } }); $("#btnPrevious").live("click", function () { var tabs = $('#tabs').tabs(); var c = $('#tabs').tabs("length"); currentTab = currentTab == 0 ? currentTab : (currentTab - 1); tabs.tabs('select', currentTab); if (currentTab == 0) { $("#btnNext").show(); $("#btnPrevious").hide(); } if (currentTab < (c - 1)) { $("#btnNext").show(); } }); $(function () { //$("#Panel2").hide(); document.getElementById('form1').onsubmit = function () { return false; }//Avoid Reloading $("#Button1").click(function () { if ($('#anspanel').is(":hidden")) { $('#anspanel').show(); } else { $('#anspanel').hide(); } if ($("#Button1").val() == "Show Answer") { $("#Button1").val("Hide Answer"); } else { $("#Button1").val("Show Answer"); } }); </script> </head> <body> <form id="form1" runat="server"> <div> <div id="tabs"> <ul> <li><a href="#tabs-1">Tab 1</a></li> <li><a href="#tabs-2">Tab 2</a></li> <li><a href="#tabs-3">Tab 3</a></li> <li><a href="#tabs-4">Tab 4</a></li> <li><a href="#tabs-5">Tab 5</a></li> </ul> <div id="tabs-1"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Panel ID="Panel1" runat="server"> <asp:Label ID="Label1" runat="server" Text='<%#Eval("Question") %>'></asp:Label> <br /> <br /> <br /> <span>A-</span> <asp:Label ID="Label2" runat="server" Text='<%#Eval("Option1")%>'></asp:Label> <br /> <br /> <span>B-</span> <asp:Label ID="Label3" runat="server" Text='<%#Eval("Option2")%>'></asp:Label> <br /> <br /> <span>C-</span> <asp:Label ID="Label4" runat="server" Text='<%#Eval("Option3")%>'></asp:Label> <br /> <br /> <span>D-</span> <asp:Label ID="Label5" runat="server" Text='<%#Eval("Option4")%>'></asp:Label> <br /> <br /> &nbsp;&nbs<asp:Button ID="Button1" runat="server" Text="Show Answer" /> <br /> <asp:Panel id="anspanel" runat="server"> <span>Correct Answer is :-</span><asp:Label ID="Label6" runat="server" Text='<%#Eval("CorrectAns")%>'></asp:Label> <br /> <br /> <asp:Label ID="Label7" runat="server" Text='<%#Eval("Explanation")%>'></asp:Label> </asp:Panel> </asp:Panel> <br /> <br /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div> <div id="tabs-2"> Tab 2 Content </div> <div id="tabs-3"> Tab 3 Content </div> <div id="tabs-4"> Tab 4 Content </div> <div id="tabs-5"> Tab 5 Content </div> </div> <input type="button" id="btnPrevious" value="Previous" style = "display:none"/> <input type="button" id="btnNext" value="Next" /> </div> </form> </body> </html>

Please show me where I am making mistake and what is the solution.请告诉我我在哪里出错以及解决方案是什么。

error :-错误 :-

 Server Error in '/' Application. Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. Source Error: Line 24: Panel panel1 = (Panel)GridView1.FindControl("Panel1"); Line 25: Panel anspanel = (Panel)GridView1.FindControl("anspanel"); Line 26: anspanel.Style.Add("display", "none"); Line 27: } Line 28: } Source File: e:\\Way2Success\\Student\\Test.aspx.cs Line: 26 Stack Trace: [NullReferenceException: Object reference not set to an instance of an object.] Student_Test.Page_Load(Object sender, EventArgs e) in e:\\Way2Success\\Student\\Test.aspx.cs:26 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +95 System.Web.UI.Control.LoadRecursive() +59 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2952

First you need to bind your grid, otherwise there won't be any Rows/Controls in there.首先你需要绑定你的网格,否则那里不会有任何行/控件。 Then you have to find your desired control and tweak it's properties然后你必须找到你想要的控件并调整它的属性

if (!IsPostBack)
{
   GridView1.DataSource = GetData("SELECT top 2 Question, Option1, Option2, Option3, Option4, CorrectAns, Explanation FROM Questions");
   GridView1.DataBind();
   foreach (GridViewRow row in GridView1.Rows)
   {
      if (row.RowType == DataControlRowType.DataRow)
      {
         Panel panel1 = (Panel)row.FindControl("Panel1");
         Panel anspanel = (Panel)panel1.FindControl("anspanel");
         anspanel.Style.Add("display", "none");
       }
    }
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM