PDA

View Full Version : سوال: ارسال اطلاعات از textbox به datatable



reza69
یک شنبه 11 خرداد 1393, 12:14 عصر
سلام
من میخوام هر بار که روی دکمه کلیک میکنم رشته از تکس باکس وارد datatable بشه. تو datatable فقط یه ستون دارم.

mb.Discover
یک شنبه 11 خرداد 1393, 13:43 عصر
دوست عزیز تو باید کامل مشکلو شرح بدی که اصلا چی نوشتی چه اروری اومده و اینکه اصلا کجای کار گیر کردی...

reza69
یک شنبه 11 خرداد 1393, 14:11 عصر
دوست عزیز تو باید کامل مشکلو شرح بدی که اصلا چی نوشتی چه اروری اومده و اینکه اصلا کجای کار گیر کردی...
سوالم واضحه
یه قطعه کد میخوام که با هر بار کلیک روی دکمه متن داخل تکسباکس رو داخل دیتاتیبل بریزه.

mb.Discover
یک شنبه 11 خرداد 1393, 14:26 عصر
اسم دیتابیس!
اسم تیبل!
نوع برنامه نویسیت!
نوع معماری که استفاده میکنی!

Davidd
یک شنبه 11 خرداد 1393, 14:32 عصر
dataTable1.Rows.Add(textBox1.Text);

reza69
یک شنبه 11 خرداد 1393, 14:37 عصر
dataTable1.Rows.Add(textBox1.Text);
این فقط یه سطر وارد میکنه.
این کدی هست که من نوشتم.

DataTable dt = new DataTable();
dt.Columns.Add("تخصص");
foreach (GridViewRow row in GridView1.Rows)
{
dt.Rows.Add(txttakhasos.Text);
}
GridView1.DataSource = dt;
GridView1.DataBind();

میخوام با هر بار کلیک مقدار داخل تکس باکس وارد گرید ویو بشه یعنی میخوام چند سطر وارد کنم.

Davidd
یک شنبه 11 خرداد 1393, 14:50 عصر
من كه از اين كد سر در نياوردم! يعني چي به تعداد سطرهاي ديتاگريد سطر تكراري به ديتاتيبل اضافه كني؟ يعني اگه ديتاگريدت 100 تا سطر داشته باشه 100 تا سطر ديگه با مقدار تكراري تكسباكس بهش اضافه كني؟! دفه بعد 200 تا تكراري اضافه ميشه و ..... اگه ديتاگريد خالي باشه كه اصلا هيچي اضافه نميشه!
شما گفتي تكس باكس به ديتاتيبل اضافه بشه. تكس باكس هم كه يك مقدار بيشتر نداره پس بايد يك سطر اضافه بشه.

reza69
یک شنبه 11 خرداد 1393, 15:06 عصر
من كه از اين كد سر در نياوردم! يعني چي به تعداد سطرهاي ديتاگريد سطر تكراري به ديتاتيبل اضافه كني؟ يعني اگه ديتاگريدت 100 تا سطر داشته باشه 100 تا سطر ديگه با مقدار تكراري تكسباكس بهش اضافه كني؟! دفه بعد 200 تا تكراري اضافه ميشه و ..... اگه ديتاگريد خالي باشه كه اصلا هيچي اضافه نميشه!
شما گفتي تكس باكس به ديتاتيبل اضافه بشه. تكس باكس هم كه يك مقدار بيشتر نداره پس بايد يك سطر اضافه بشه.
این کدی که من نوشتم اشتباس
ببین من میخوام تو دیتاگرید یه لیست ایجاد کنم میخوام با هربار کلیک بر روی دکمه یه سطر به دیتاگرید اضافه بشه.و مقادیر قبلی پاک نشن

Davidd
یک شنبه 11 خرداد 1393, 15:17 عصر
خب مستقيما به ديتاگريد سطر اضافه كن و ديتاگريد به ديتاتيبل bind نكن.
GridView1.Rows.Add(textBox1.Text);
راه حل ديگه اينه كه ديتاتيبل هربار new نكني. ديتاتيبل به عنوان يك فيلد تعريف كن و وقتي فرم لود شد يك ستون بهش اضافه كن و وقتي دكمه زده شد فقط سطر بهش اضافه كن نه اينكه دوباره يه ديتاتيبل جديد بسازي.

reza69
یک شنبه 11 خرداد 1393, 15:22 عصر
خب مستقيما به ديتاگريد سطر اضافه كن و ديتاگريد به ديتاتيبل bind نكن.
GridView1.Rows.Add(textBox1.Text);
راه حل ديگه اينه كه ديتاتيبل هربار new نكني. ديتاتيبل به عنوان يك فيلد تعريف كن و وقتي فرم لود شد يك ستون بهش اضافه كن و وقتي دكمه زده شد فقط سطر بهش اضافه كن نه اينكه دوباره يه ديتاتيبل جديد بسازي.
آخه من دارم تحت وب کار میکنم این کد که شما نوشتی اشتباس
میشه کد اون راه حل دیگت رو بنویسی

khokhan
یک شنبه 11 خرداد 1393, 15:39 عصر
این کدی که من نوشتم اشتباس
ببین من میخوام تو دیتاگرید یه لیست ایجاد کنم میخوام با هربار کلیک بر روی دکمه یه سطر به دیتاگرید اضافه بشه.و مقادیر قبلی پاک نشن

دو تا متد لازم داری
یکی برای ایجاد و یکی برای افزودن ردیف در دیتاتیبل
بعد هم با هر بار کلیک که محتوای تکست باکسها رو ریختی توی دیتاتیبل ، گرید رو با یند می کنی تا اطلاعات جدید وارد شوند

protected void Page_Load(object sender, EventArgs e)

{
if (!Page.IsPostBack)

{
DataTable myDt = new DataTable();

myDt = CreateDataTable();
Session["myDatatable"] = myDt;

}

}


.................


private void AddDataToTable(string username, string firstname, string lastname, DataTable myTable)

{
DataRow row;

row = myTable.NewRow();
row["Name"] = username;

row["Email"] = firstname;
row["Contact No"] = lastname;

myTable.Rows.Add(row);

}


..................

private DataTable CreateDataTable()

{
DataTable myDataTable = new DataTable();

DataColumn myDataColumn;
myDataColumn = new DataColumn();

myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Name";

myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();

myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Email";

myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();

myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Contact No";

myDataTable.Columns.Add(myDataColumn);
return myDataTable;

}



............



protected void CmdAddMore_Click(object sender, EventArgs e)

{
if (TxtConPersonName.Text.Trim() == "" || TxtConPersonEmail.Text.Trim() == "")

{
this.lblTips.Text = "You must fill a Person Name.";return;

}

else

{
AddDataToTable(this.TxtConPersonName.Text.Trim(), this.TxtConPersonEmail.Text.Trim(), this.TxtConPersonContactNo.Text.Trim(), (DataTable)Session["myDatatable"]);

this.DVContactPersons.DataSource = ((DataTable)Session["myDatatable"]).DefaultView;
this.DVContactPersons.DataBind();

this.TxtConPersonEmail.Text = "";
this.TxtConPersonContactNo.Text = "";

this.TxtConPersonName.Text = "";
this.lblTips.Text = "";

}

}

reza69
یک شنبه 11 خرداد 1393, 15:45 عصر
دو تا متد لازم داری
یکی برای ایجاد و یکی برای افزودن ردیف در دیتاتیبل
بعد هم با هر بار کلیک که محتوای تکست باکسها رو ریختی توی دیتاتیبل ، گرید رو با یند می کنی تا اطلاعات جدید وارد شوند

protected void Page_Load(object sender, EventArgs e)

}

حالا نمیشه یه کد کمتر بدید اینکه خیلی زیاده

khokhan
یک شنبه 11 خرداد 1393, 15:47 عصر
حالا نمیشه یه کد کمتر بدید اینکه خیلی زیاده
:لبخند:heee
در مقایسه با عظمت کاری که حضرتعالی می خواین انجام بدین چیزی نیس

reza69
یک شنبه 11 خرداد 1393, 15:51 عصر
:لبخند:heee
در مقایسه با عظمت کاری که حضرتعالی می خواین انجام بدین چیزی نیس
آخه پر کردن یه data table که بعد اون وصلش کنم به گرید که کاری نداره.
فقط من کدشو بلد نیستم:لبخند::لبخند:

khokhan
یک شنبه 11 خرداد 1393, 15:57 عصر
آخه پر کردن یه data table که بعد اون وصلش کنم به گرید که کاری نداره.
فقط من کدشو بلد نیستم:لبخند::لبخند:
کمتر از این دیگه مقدور نیست یعنی نمی تونی پیدا کنی .......... شک نکن

khokhan
یک شنبه 11 خرداد 1393, 16:00 عصر
نه که نمی شه می شه اما همونطور که خودتون هم اشاره کردین فقط یه ردیف در هر بار اضافه می کنه و دفعه بعد قبلی رو پاک می کنه

نگاه :


DataTable table = new DataTable();
table.Columns.Add("StudentID", typeof(int));
table.Columns.Add("StudenName", typeof(string));
table.Columns.Add("Passed", typeof(bool));

int studentID = int.Parse(txtStudentID.Text);
String studentName = txtStudentName.Text;
bool passed = ckbxPF.SelectedIndex == 0;

table.Rows.Add(studentID, studentName, passed);

reza69
یک شنبه 11 خرداد 1393, 16:01 عصر
کمتر از این دیگه مقدور نیست یعنی نمی تونی پیدا کنی .......... شک نکن
نمیتونی این کد رو یجوری تغییر بدی که بشه.

DataTable dt = new DataTable();
dt.Columns.Add("تخصص");
foreach (GridViewRow row in GridView1.Rows)
{
dt.Rows.Add(txttakhasos.Text);
}
GridView1.DataSource = dt;
GridView1.DataBind();

khokhan
یک شنبه 11 خرداد 1393, 16:15 عصر
نمیتونی این کد رو یجوری تغییر بدی که بشه.

DataTable dt = new DataTable();
dt.Columns.Add("تخصص");
foreach (GridViewRow row in GridView1.Rows)
{
dt.Rows.Add(txttakhasos.Text);
}
GridView1.DataSource = dt;
GridView1.DataBind();




حلقه دیگه برای چیه ؟؟؟؟؟:متفکر:
همین کد رو می تونی به راحتی بر گردونی به asp


DataTable dt = new DataTable();
DataRow dr;
private void button1_Click(object sender, EventArgs e)
{
dr = dt.NewRow();
dr["Name"] = txt_name.Text;
dr["Address"] = txt_address.Text;
dr["Age"] = txt_age.Text;
dt.Rows.Add(dr);
dataGridView1.DataSource = dt;

}

reza69
یک شنبه 11 خرداد 1393, 16:23 عصر
حلقه دیگه برای چیه ؟؟؟؟؟:متفکر:
همین کد رو می تونی به راحتی بر گردونی به asp


DataTable dt = new DataTable();
DataRow dr;
private void button1_Click(object sender, EventArgs e)
{
dr = dt.NewRow();
dr["Name"] = txt_name.Text;
dr["Address"] = txt_address.Text;
dr["Age"] = txt_age.Text;
dt.Rows.Add(dr);
dataGridView1.DataSource = dt;

}
از این خطا میگیره
Column 'تخصص' does not belong to table .

khokhan
یک شنبه 11 خرداد 1393, 16:32 عصر
از این خطا میگیره
Column 'تخصص' does not belong to table .
ابتدیا این یه خط رو در رویداد page load اضافه کن

dt.Columns.Add("تخصص");