Получить модель и цену автомобиля, используя параметры - PullRequest
0 голосов
/ 16 ноября 2018
using System;
using System.Data.SqlClient;

namespace car_database
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        public class car
        {
            string connstring = "Data Source=.\\SqlExpress; Initial Catalog=carsale; Integrated Security=True";

            protected BtnView(object sender, EventArgs e)
            {
                SqlConnection myConnection = new SqlConnection(connstring);

                try
                {
                    myConnection.Open();
                    string query = "select model ,price from car where Id =@carid";

                    SqlCommand mycmd = new SqlCommand(query, myConnection);

                    int carid1;

                    if (!int.TryParse(TextBox1.Text, out carid1))
                    { 
                         Label1.Text = "please enter a numeric ID!";
                    }
                    else
                    {
                        mycmd.Parameters.Add("@carid", System.Data.SqlDbType.Int);
                        mycmd.Parameters["@carid"].Value = carid1;

                        SqlDataReader reader = mycmd.ExecuteReader();

                        if (reader.Read())
                        {
                            Label1.Text = "Model:" + reader["model"] + "<br/>" + "price:" + (string)reader["price"];
                        }
                        else
                        {
                            Label1.Text = "no car has this id ";
                        }

                        reader.Close();
                    }
                }
                catch (Exception ex)
                {
                    Label1.ForeColor = System.Drawing.Color.Red;
                    Label1.Text = ex.Message;
                }
                finally
                {
                    myConnection.Close();
                }
            }
        }
    }
}

Я хочу отобразить модель автомобиля и цену в Label1 при нажатии кнопки в соответствии с идентификатором, введенным в TextBox1.

aspx разметка:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="car_database.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
enter id to retrieve the model and the price of the car :
<asp:TextBox runat="server" ID="TextBox1" />

            <br />
            <asp:Button runat="server" ID="btn" OnClick ="BtnView" />
            <br />
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        </div>
    </form>
</body>
</html>

Но код не работает - я получаю сообщение об ошибке:

автомобиль общественного класса должен иметь тип возврата

TextBox1.Text и Label1.Text содержат ошибки:

Ссылка на объект требуется для метода или свойства нестатического поля

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Удалите класс public class car , код должен быть в WebForm1 классе, чтобы иметь доступ к его элементам управления.

Попробуйте вот так:

using System;
using System.Data.SqlClient;


namespace car_database
{
    public partial class WebForm1 : System.Web.UI.Page
    {



            string connstring = "Data Source=.\\SqlExpress; Initial Catalog=carsale; Integrated Security=True";

            protected BtnView(object sender, EventArgs e)
            {
                SqlConnection myConnection = new SqlConnection(connstring);
                try
                {
                    myConnection.Open();
                    string query = "select model ,price from car where Id =@carid";

                    SqlCommand mycmd = new SqlCommand(query, myConnection);

                    int carid1;

                    if (!int.TryParse(TextBox1.Text, out carid1))
                    { Label1.Text = "please enter a numerac ID!"; }

                    else
                    {
                        mycmd.Parameters.Add("@carid", System.Data.SqlDbType.Int);
                        mycmd.Parameters["@carid"].Value = carid1;

                        SqlDataReader reader = mycmd.ExecuteReader();

                        if (reader.Read())
                        {
                            Label1.Text = "Model:" + reader["model"] + "<br/>" + "price:" + (string)reader["price"];

                        }

                        else
                        {
                            Label1.Text = "no car has this id ";

                        }

                        reader.Close();
                    }

                }
                catch (Exception ex)
                {
                    Label1.ForeColor = System.Drawing.Color.Red;
                    Label1.Text = ex.Message;

                }
                finally
                {

                    myConnection.Close();

                }

            }

    }
}
0 голосов
/ 16 ноября 2018

Я вижу пару ошибок

protected BtnView(object sender, EventArgs e)
{

Должно быть

protected Void BtnView(object sender, EventArgs e) 
{
   ....
}

Кроме того, Label1.Text = "please enter a numeric ID!"; должно быть this.Label1.Text = "please enter a numeric ID!"; с учетом Label1 - имя экземпляра элемента управления Label

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...