2012-04-17 33 views
0

我在基于会话的登录登录基础上填充gridview时遇到了问题。我正在使用母版页。目前我得到一个“必须声明标量变量”。我的想法是在脚本区域的某处找回它。任何帮助是极大的赞赏!!!!基于数据库信息在基于会话登录的基础上填充gridview

现在的问题是代码应该为非主页面检索基于他们的uname(数据库中的列)或UID(主键和理想方式)的人的具体信息 母版页代码至少相关的东西)

protected void btnlogin2_Click(object sender, EventArgs e) 
{ 
    if (btnlogin2.Text == "Login") 
    { 

     string strCmd = "Select * From Person Where [email protected] and [email protected]"; 
     SqlConnection objConn = new SqlConnection(strConn); 
     SqlCommand objCmd = new SqlCommand(strCmd, objConn); 
     objCmd.Parameters.AddWithValue("@uname", txtusername.Text); 
     objCmd.Parameters.AddWithValue("@upass", txtpassword.Text); 


     using (objConn) 
     { 
      objConn.Open(); 
      SqlDataReader objDR = objCmd.ExecuteReader(); 

      if (objDR.Read()) 
      { 

       Session["uname"] = txtusername.Text; 

       if (objDR["Type"].ToString() == "Member") 
       { Response.Redirect("member.aspx"); } 
       else if (objDR["Type"].ToString() == "Pledge") 
       { Response.Redirect("member.aspx"); } 
       else if (objDR["Type"].ToString() == "Admin") 
       { Response.Redirect("eboard.aspx"); } 



      } 
      else 
      { 


       // btnlogin2.Text = "Failed"; 

      } 
     } 
     btnlogin2.Text = "Logout"; 
    } 
    else if (btnlogin2.Text == "Logout") 
    { 
     btnlogin2.Text = "Login"; 
     txtusername.Visible = true; 
     txtpassword.Visible = true; 
     pnlSideBar.Visible = false; 

     Session.Abandon(); 
     Response.Redirect("index.aspx"); 

    } 
    btnlogin2.Text = "Failed"; 
} 

代码页

<%@ Page Language="C#" Debug="true" MasterPageFile="masterpage.master" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Data.SqlClient" %> 
<%@ Import Namespace="System.Web.Configuration" %> 

<script runat="server"> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     string strConn = WebConfigurationManager.ConnectionStrings["cloud2"].ConnectionString; 
     if (User.Identity.IsAuthenticated) 
     { 
      Button btnlogin2 = (Button)Master.FindControl("btnlogin2"); 
      TextBox txtusername = (TextBox)Master.FindControl("txtusername"); 
      TextBox txtpassword = (TextBox)Master.FindControl("txtpassword"); 
      Panel pnlSideBar = (Panel)Master.FindControl("pnlSideBar"); 
      Panel pnlPledge = (Panel)Master.FindControl("pnlPledge"); 
      Panel pnlEboard = (Panel)Master.FindControl("pnlEboard"); 


      string strCmd = "Select * From Person Where [email protected]"; 
      SqlConnection objConn = new SqlConnection(strConn); 
      SqlCommand objCmd = new SqlCommand(strCmd, objConn); 
      objCmd.Parameters.AddWithValue("@uname", Session["uname"]); 




      using (objConn) 
      { 
       objConn.Open(); 
       SqlDataReader objDR = objCmd.ExecuteReader(); 

       if (objDR.Read()) 
       { 
        btnlogin2.Visible = true; 
        btnlogin2.Text = "Logout"; 
        txtusername.Visible = false; 
        txtpassword.Visible = false; 
        if (objDR["Type"].ToString() == "Admin") 
        { 
         pnlEboard.Visible = true; 
         pnlPledge.Visible = false; 
         pnlSideBar.Visible = false; 

        } 
        else if (objDR["Type"].ToString() == "Member") 
        { 
         pnlEboard.Visible = false; 
         pnlPledge.Visible = false; 
         pnlSideBar.Visible = true; 

        } 
        else if (objDR["Type"].ToString() == "Pledge") 
        { 
         pnlPledge.Visible = true; 
         pnlEboard.Visible = false; 
         pnlSideBar.Visible = false; 
        } 
        lblLogin.Text = "Logged in as: " + objDR["Fname"] + " " + objDR["Lname"]; 
       } 
      } 
     } 
    } 
</script> 


    </asp:Content> 
    <asp:Content ID="Content2" ContentPlaceHolderID="cphText" runat="server"> 
    <div id="mainContent"> 
    <h1> My Service Hours</h1> 
    <p>&nbsp;</p> 
    <table width="318" height="126" border="1" cellspacing="1"> 
     <caption> 
     Event Event Date Hours 
     </caption> 
     <tr> 
     <th width="100" scope="col">Polar Plunge</th> 
     <th width="100" scope="col">1/13/12</th> 
     <th width="100" scope="col">5 hrs</th> 
     </tr> 
    </table> 
    <form id="form3" name="form2" method="post" action=""> 
     <label for="Totalhrs"></label> 
     Total: 5hrs 
    </form> 
     <asp:GridView ID="grvServiceHours" DataSourceID="srcServiceHours" runat="server"/> 
     <asp:SqlDataSource 
     id="srcServiceHours" 
     ConnectionString="<%$ ConnectionStrings:cloud2 %>" 
     SelectCommand="select Event.Event_Name, Event.Event_Time, Event.Event_Type, Service_Hours.Hours, Service_Hours.Hours_Completed 
         from Event, Service_Hours, Person 
         where Event.EvID=Service_Hours.EvID and Person.UID=Service_Hours.UID and [email protected]" 
     Runat="server" /> 
    <p>&nbsp;</p> 
    <!-- end #mainContent --></div> 
    </asp:Content> 

回答

0

创建你主子属性格式,并使用它的任何地方你的内容页面上,而不是一个变量。母版页属性可以通过在你的aspx页面中添加指令来访问内容页面上的任何位置。

+0

对于如何去做这件事你有什么建议吗?任何会很棒。谢谢 – SQAHero 2012-04-18 04:03:16

+0

以下链接包含您的应用中需要的完整信息。 http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx – 2012-04-18 05:59:50