Jayanth Prince Ответов: 1

Вставка нескольких динамических значений текстового поля в базу данных с помощью формы windows


Я получил ссылки для добавления динамических значений текстового поля и хранения всех значений текстового поля в базе данных на одной кнопке отправки с помощью Asp.net.но теперь мне нужно выполнить ту же задачу в форме windows.Может ли кто-нибудь помочь мне, как вставить все динамические значения текстового поля одним нажатием кнопки отправки.(Например:если я добавлю несколько пяти строк текстовых полей, все пять строк должны быть вставлены в базу данных).Я использую форму приложения Windows,SQl Server и класс Linq to SQL.
Примечание:Я могу вставлять по одной строке за раз.Но мне нужно несколько строк, которые будут вставлены в базу данных.

Что я уже пробовал:

public partial class Form1 : Form
    {
        List<textbox> textBoxes;
        TextBox tb1;
        TextBox tb2;
        TextBox tb3;
        TextBox tb4;
        ComboBox cm;
        int lbltext = 1;
        int A = 1;
        int i = 0;
        int j = 0;
        public Form1()
        {
            InitializeComponent();
            textBoxes = new List<textbox>();
        }
        //Add Button for adding Dynamic TextBoxes
        private void Button1_Click(object sender, EventArgs e)
        {
            Show(); 
            if (A > 12)
            {
                MessageBox.Show("Cannot insert More than 12 records in a page");
            }
            A += 1;
            lbltext += 1;
        }
        private new void Show()
        {
            i++;
            tb1 = new TextBox()
            {
                Text = (lbltext).ToString() + ".",
                Height = 22,
                Width = 17,
                Left = 9,
                Top = 140 + A * 36,
             // Parent = FormWindowState.Normal,
                Name = "textbox" + i
            };
            i++;
            tb2 = new TextBox
            {
                Height = 22,
                Width = 60,
                Left = 43,
                Top = 140 + A * 36,
                Name ="textbox"+i
            };
            i++;
            tb3 = new TextBox {
                Height = 22,
                Width = 64,
                Left = 122,
                Top = 140 + A * 36,
                Name="textbox"+i
            };
            i++;
            tb4 = new TextBox {
            Height = 22,
            Width = 80,
            Left = 220,
            Top = 140 + A * 36,
            Name ="textbox"+i
            };
            j++;
            cm = new ComboBox();
            cm.Text = "-NONE-";
            cm.Items.Add("-PRESENT-");
            cm.Items.Add("-LEAVE-");
            cm.Items.Add("-HOLIDAY-");
            cm.Left = 358;
            cm.Width = 92;
            cm.Height = 22;
            cm.Name = "ComBoBox" + j;
            cm.Top = 140 + A * 36;
            textBoxes.Add(tb1);
            textBoxes.Add(tb2);
            textBoxes.Add(tb3);
            textBoxes.Add(tb4);
            this.Controls.Add(tb1);
            this.Controls.Add(tb2);
            this.Controls.Add(tb3);
            this.Controls.Add(tb4);
            this.Controls.Add(cm);
        }
       //Submitting values to Database
        private void Button2_Click(object sender, EventArgs e)
        { 
            ExampleDataContext dc = new ExampleDataContext();
            TextBox3 tb = new TextBox3();
            TextBox4 dtb4 = new TextBox4();
            TextBox5 dtb5 = new TextBox5();
            TextBox6 dtb6 = new TextBox6();
            ComboBox2 dcm = new ComboBox2();
            Lable lable = new Lable();
            try
            {   
                    lable.textvalue = lbltext.ToString();
                    //For Storing S.No
                    tb.textvalue = lbltext - 1;
                    tb.HeightValue = tb1.Height;
                    tb.WidthValue = tb1.Width;
                    tb.LeftValue = tb1.Left;
                    tb.TopValue = tb1.Top;
                    tb.name = tb1.Name;
                    select tb.textvalue;
                    dc.TextBox3s.InsertOnSubmit(tb);
                    dc.SubmitChanges();
                    //For Storing Id
                    dtb4.textvalue = tb2.Text;
                    dtb4.HeightValue = tb2.Height;
                    dtb4.WidthValue = tb2.Width;
                    dtb4.LeftValue = tb2.Left;
                    dtb4.TopValue = tb2.Top;
                    dtb4.name = tb2.Name;
                    dc.TextBox4s.InsertOnSubmit(dtb4);
                    dc.SubmitChanges();
                    //For Storing Name
                    dtb5.textvalue = tb3.Text;
                    dtb5.HeightValue = tb3.Height;
                    dtb5.WidthValue = tb3.Width;
                    dtb5.LeftValue = tb3.Left;
                    dtb5.TopValue = tb3.Top;
                    dtb5.name = tb3.Name;
                    dc.TextBox5s.InsertOnSubmit(dtb5);
                    dc.SubmitChanges();
                    //For Storing Designation
                    dtb6.textvalue = tb4.Text;
                    dtb6.HeightValue = tb4.Height;
                    dtb6.WidthValue = tb4.Width;
                    dtb6.LeftValue = tb4.Left;
                    dtb6.TopValue = tb4.Top;
                    dtb6.name = tb4.Name;
                    dc.TextBox6s.InsertOnSubmit(dtb6);
                    dc.SubmitChanges();
                    //For Storing Attendence ComboBox
                    dcm.LeftValue = cm.Left;
                    dcm.HeightValue = cm.Height;
                    dcm.TopValue = cm.Top;
                    dcm.WidthValue = cm.Width;
                    dcm.textvalue = cm.Text;
                    dcm.name = cm.Name;
                    dc.ComboBox2s.InsertOnSubmit(dcm);
                    dc.SubmitChanges();
                    MessageBox.Show("Record inserted successfully");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Record already exists" + ex.Message);
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {   //For maintaining the names of dynamic textboxes when the form got loaded 
            //for the second time
            this.WindowState = Properties.Settings.Default.F1State;
          
            }
        }

Afzaal Ahmad Zeeshan

Я бы рекомендовал использовать привязку данных в этих случаях, они значительно упростили бы структуру. :-)

1 Ответов

Рейтинг:
8

Maciej Los

Вы на правильном пути и ваш код нуждается в небольшом улучшении:

private void Button2_Click(object sender, EventArgs e)
{ 
//textboxes creation here

//later
EntityContext ec = new EntityContext()
{
    TextBox3s = tb,
    TextBox4s = dtb4,
    TextBox5s = dtb5,
    TextBox6s = dtb6,
    ComboBox2s = cm
};

ExampleDataContext dc = new ExampleDataContext()
dc.InsertOnSubmit(ec);
dc.SubmitChanges();
}


Примечание: EntityContext это класс, имена и типы полей которого соответствуют полям вашей таблицы.
Для получения более подробной информации, пожалуйста, смотрите: Таблица<TEntity>.Метод InsertOnSubmit(TEntity) (System.Data.Linq) | Microsoft Docs[^]

Примечание: использование имен полей, равных именам элементов управления, очень странно...


Jayanth Prince

@Мачей Лос,
Большое спасибо
Примечание:На самом деле я новичок,пытаюсь сохранить эти динамические текстовые поля в базе данных, и когда мы открываем форму со второго раза, все текстовые поля должны быть стабильны в тех же позициях вместе со свойствами.Поэтому, сохранив их, я попытаюсь вернуться обратно в форму.
Я получаю ошибку, когда пытаюсь создать объект для EntityContext."тип или имя пространства имен 'EntityContext' не может быть найден (вы пропускаете директиву using или ссылку на сборку?)"

Вы можете мне помочь

Maciej Los

Как я уже упоминал: "EntityContext-это класс, имена и типы полей которого соответствуют полям вашей таблицы". Это означает, что вы должны создать его! Перейдите по ссылке, которую я предоставил.

Jayanth Prince

Готит

Maciej Los

Супер!
Ваше здоровье!
Мацей