Попытка вытащить данные из одной таблицы в поле в другой - Получение «Имя не существует в текущем контексте» Ошибка - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть 4 таблицы SQL: продукт, поставщик, клиент и заказ.Я создал таблицу в C #, которая позволит пользователям создавать, читать, обновлять и удалять элементы из каждой таблицы.

В таблице заказов я хочу получить такие данные, как наименование продукта, цена,Имя клиента и поставщик из других таблиц.

Первое, что я пытаюсь - это ProductName, и я хотел бы, чтобы элементы в поле имени из таблицы продуктов отображались в виде раскрывающегося списка в поле в заказе.Таблица.Я думал, что настроил его правильно, но выпадающий идентификатор из моего файла OrderForm.aspx выдавал ошибку и теперь видел идентификатор из файла OrderForm.aspx.cs.Я назвал раскрывающийся список, и теперь он отображается при загрузке страницы, но вы не можете изменить элемент или добавить его в список.

Я попытался переместить раздел, назначив раскрывающийся список переменнойчтобы найти идентификатор раскрывающегося списка, и это сделало раскрывающийся список доступным, но кнопка добавления больше не работает.Я прокомментировал некоторые вещи, которые я пробовал в приведенном ниже коде.

namespace VirtualStore

{
    public partial class OrderForm : System.Web.UI.Page
    {
        string connectionString = @"Data Source=rdw-etracsql01;Initial Catalog=SALES_KD;Integrated Security=True;";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulateGridview();
                PopulateDropdown();
            }
            else
            {
               // PopulateTextFields();
            }

        }
        /* public void PopulateTextFields()
        {

            SqlCommand sql = new SqlCommand("SELECT * FROM product");
            using (SqlConnection sqlCon2 = new SqlConnection(connectionString))
                sqlCon2.Open();
            SqlDataReader listProductPrices;
            listProductPrices = sql.ExecuteReader();
            ds = listProductPrices;
        } */
        void PopulateDropdown()
        {
            DataSet ds = new DataSet();
            using (SqlConnection sqlCon2 = new SqlConnection(connectionString))
            {
                sqlCon2.Open();
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM product", sqlCon2);
                da.Fill(ds);
            }            
                DropDownList myDDL = (DropDownList)gvOrder.FooterRow.FindControl("DropProductNameFooter");

                //  myDDL.DataTextField = ds.Tables[0].Columns["ProductName"].ToString();
                //  myDDL.DataValueField = ds.Tables[0].Columns["id"].ToString(); 
                myDDL.DataSource = ds; //.Tables[0];
                myDDL.DataTextField = "ProductName";
                myDDL.DataValueField = "ProductID";
                myDDL.DataBind();
            TextBox ProductPrice = (TextBox)gvOrder.FooterRow.FindControl("txtProductPriceFooter");

            string ProductID = myDDL.DataValueField.ToString();
            ProductPrice.Text = ds.Tables[0].Select("ProductID=" + ProductID)[0]["ProductPrice"].ToString(); 

        }
        void PopulateGridview()
        {
            DataTable dtbl = new DataTable();
            using (SqlConnection sqlCon = new SqlConnection(connectionString))
            {
                sqlCon.Open();
                SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM [order]", sqlCon);
                sqlDa.Fill(dtbl);
            }
            if (dtbl.Rows.Count > 0)
            {
                gvOrder.DataSource = dtbl;
                gvOrder.DataBind();
            }
            else
            {
                dtbl.Rows.Add(dtbl.NewRow());
                gvOrder.DataSource = dtbl;
                gvOrder.DataBind();
                gvOrder.Rows[0].Cells.Clear();
                gvOrder.Rows[0].Cells.Add(new TableCell());
                gvOrder.Rows[0].Cells[0].ColumnSpan = dtbl.Columns.Count;
                gvOrder.Rows[0].Cells[0].Text = "No Data Found ...!";
                gvOrder.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;

            }
        }


        protected void gvOrder_RowCommand(Object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName.Equals("AddNew"))
                {
                    using (SqlConnection sqlCon = new SqlConnection(connectionString))
                    {
                        sqlCon.Open();
                        string query = "INSERT INTO [order] (ProductName, ProductPrice, ProductQuantity, CustomerID, TotalPrice, OrderDate) VALUES (@ProductName, @ProductPrice, @ProductQuantity, @CustomerID, @TotalPrice, @OrderDate)";
                        SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
                        sqlCmd.Parameters.AddWithValue("@ProductName", (gvOrder.FooterRow.FindControl("txtProductNameFooter") as TextBox).Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@ProductPrice", (gvOrder.FooterRow.FindControl("txtProductPriceFooter") as TextBox).Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@ProductQuantity", (gvOrder.FooterRow.FindControl("txtProductQuantityFooter") as TextBox).Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@CustomerID", (gvOrder.FooterRow.FindControl("txtCustomerIDFooter") as TextBox).Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@TotalPrice", (gvOrder.FooterRow.FindControl("txtTotalPriceFooter") as TextBox).Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@OrderDate", (gvOrder.FooterRow.FindControl("txtOrderDateFooter") as TextBox).Text.Trim());
                        sqlCmd.ExecuteNonQuery();
                        PopulateGridview();
                        lblSuccessMessage.Text = "New Record Added";
                        lblErrorMessage.Text = "";
                    }
                }
            }
            catch (Exception ex)
            {
                lblSuccessMessage.Text = "";
                lblErrorMessage.Text = ex.Message;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...