2016-04-13 3 views
1

Я пытаюсь отобразить данные из многоквартирного sql на мою страницу aspx, но не получаю вещи togheter.Несколько значений из sql-запроса отображаются на странице aspx

У меня есть главная страница, где я хочу отображать значения из sql.

Мой Masterpage (Site.Master):

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="MySite.SiteMaster" %> 
<!DOCTYPE html> 
<html lang="en"> 
    <head runat="server"></head> 
    <body> 
     <form runat="server"> 
      <div class="content"> 
       <div> 
        <font class="label label-primary"><%= DateTime.Now.ToShortDateString() %> 
        <asp:Label runat="server" ID="LabelCountMember"></asp:Label> 
        <asp:Label runat="server" ID="LabelCountLogins"></asp:Label> 
        <asp:Label runat="server" ID="LabelCountFailedLogins"></asp:Label> 
       </div> 
       <asp:ContentPlaceHolder ID="MainContent" runat="server"> 
       </asp:ContentPlaceHolder> 
       <hr /> 
       <footer> 
        <p>This is my footer!</p> 
       </footer> 
      </div> 
     </form> 
    </body> 
</html> 

Мой код за файл (Site.Master.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.Web.Configuration; 
using System.Data; 

namespace MySite 
{ 
    public partial class SiteMaster : MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     public void countmembers(object sender, EventArgs e) 
     { 
      string sql = @"SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins"; 

      string variable; 
      using (var connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString)) 
      using (var command = new SqlCommand(sql, connection)) 
      { 
       connection.Open(); 
       using (var reader = command.ExecuteReader()) 
       { 
        //Check the reader has data: 
        if (reader.Read()) 
        { 
         variable = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 

        } 
        // If you need to use all rows returned use a loop: 
        while (reader.Read()) 
        { 
         // Do something 
         string strAllRegMembers = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 
         string strAllLogins = reader.GetInt32(reader.GetOrdinal("AllLogins")).ToString(); 
         string strAllFailLogins = reader.GetInt32(reader.GetOrdinal("AllFailLogins")).ToString(); 

         Label.LabelCountMember.Text = strAllRegMembers; 
         Label.LabelCountLogins.Text = strAllLogins; 
         Label.LabelCountFailedLogins.Text = strAllFailLogins; 
        } 
       } 
      } 
     } 
    } 
} 

Пожалуйста, помогите мне разобраться в основной Структур. Я пробовал много разных методов, но никто из них не работает, и я действительно не могу найти простой пример, имея дело с несколькими значениями от читателя. Я obviusly поиск с неправильными ключевыми словами.

Я могу заставить его работать в классическом ASP, используя следующий код, но я действительно хочу начать переходить на C#.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<!--#include file="dbcon.asp" --> 
<% 
sql = "SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, " & _ 
       "SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, " & _ 
       "(SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins";" 

call dbOpen(conn) 

Set rs = conn.Execute(sql) 
strAllRegMembers = rs("AllRegMembers") 
strAllLogins = rs("AllLogins") 
strAllFailLogins = rs("AllFailLogins") 
rs.Close : Set rs = Nothing 

Call dbClose(conn) 
%> 
<!DOCTYPE HTML> 
<html> 
<head></head> 
<body> 
<span>Registered members: <%= strAllRegMembers %></span> 
<span>Number of OK logins: <%= strAllLogins %></span> 
<span>Number of failed logins: <%= strAllFailLogins %></span> 
</body> 
</html> 

Благодаря Криса и Джо Biesta ниже folows рабочий файл CodeBehind. Парфюм Перфекта, спасибо!

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.Web.Configuration; 
using System.Data; 

namespace MySite 
{ 
    public partial class SiteMaster : MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      countmembers(); 
     } 

     public void countmembers() 
     { 

      string strAllRegMembers = String.Empty; 
      string strAllLogins = String.Empty; 
      string strAllFailLogins = String.Empty;     
      string sql = @"SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, 
             (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins"; 

      string variable; 
      using (var connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString)) 
      using (var command = new SqlCommand(sql, connection)) 
      { 
       connection.Open(); 
       using (var reader = command.ExecuteReader()) 
       { 
        //Check the reader has data: 
        if (reader.Read()) 
        { 
         variable = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 

        } 
        // If you need to use all rows returned use a loop: 
        while (reader.Read()) 
        { 
         // Do something 
         strAllRegMembers = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 
         strAllLogins = reader.GetInt32(reader.GetOrdinal("AllLogins")).ToString(); 
         strAllFailLogins = reader.GetInt32(reader.GetOrdinal("AllFailLogins")).ToString(); 


        } 
       } 
      } 

       LabelCountMember.Text = strAllRegMembers; 
       LabelCountLogins.Text = strAllLogins; 
       LabelCountFailedLogins.Text = strAllFailLogins; 
     } 
    } 
} 

Для других, которые могут найти это полезным. Если возвращаемые значения используются формат текст вместо этого:

reader.GetString(reader.GetOrdinal("AllRegMembers")); 

ответ

1

Попробуйте следующий код:

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.Web.Configuration; 
    using System.Data; 

    namespace MySite 
    { 
     public partial class SiteMaster : MasterPage 
     { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       countmembers(); 
      } 

      public void countmembers() 
      { 

       string strAllRegMembers = String.Empty; 
       string strAllLogins = String.Empty; 
       string strAllFailLogins = String.Empty;     
       string sql = @"SELECT (SELECT COUNT(MemberID) from MyTable where Mamber = 'Registered') AS AllRegMembers, 
              (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'ok') AS AllLogins, 
              (SELECT COUNT(MemberID) from MyTable where LoginStatus = 'fail') AS AllFailLogins"; 

       string variable; 
       using (var connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString)) 
       using (var command = new SqlCommand(sql, connection)) 
       { 
        connection.Open(); 
        using (var reader = command.ExecuteReader()) 
        { 
         //Check the reader has data: 
         if (reader.Read()) 
         { 
          variable = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 

         } 
         // If you need to use all rows returned use a loop: 
         while (reader.Read()) 
         { 
          // Do something 
          strAllRegMembers = reader.GetInt32(reader.GetOrdinal("AllRegMembers")).ToString(); 
          strAllLogins = reader.GetInt32(reader.GetOrdinal("AllLogins")).ToString(); 
          strAllFailLogins = reader.GetInt32(reader.GetOrdinal("AllFailLogins")).ToString(); 


         } 
        } 
       } 

        Label.LabelCountMember.Text = strAllRegMembers; 
          Label.LabelCountLogins.Text = strAllLogins; 
          Label.LabelCountFailedLogins.Text = strAllFailLogins; 
      } 
     } 
    } 
1

Если я что-то пропустил (немного сложно читать код на моем телефоне) это выглядит так, как будто ваша проблема в том, что ничто не звонит ваш метод countmembers ,

Попробуйте вызвать этот метод из метода загрузки страницы и посмотрите, как вы справляетесь.

Также, как предложил Крис, поместите отладочную точку в свой код и пройдите через нее. Тогда вы увидите, где он не работает.

+0

Я теперь пытался вставить контрольные точки и по-разному пытаются вызвать метод от загрузки страницы, но Нету. Рассматривает, сколько контрольных точек я определяю (я пытался использовать «При нажатии» отображаемое сообщение и «количество попыток», но нет). Как мне заставить его работать? Я попытался добавить в Page_load countmembers() также попытался добавить countmembers() в мой aspx-файл, но nope – Slint

+0

@Slint проверить ответ слева от Криса на код, чтобы попробовать, я бы предложил тот же код, который он отправил. –

+0

Да, пример Криса работал. Мне только нужно было исправить свои первые ошибки с помощью Label.LabelCountMemebers.Text to LabelCountMembers.Text Спасибо, ребята! – Slint

 Смежные вопросы

  • Нет связанных вопросов^_^