PDA

View Full Version : چگونه میتوان اطلاعات یک ردیف از grid view را در یک جدول ثبت کرد؟



mialdf
شنبه 30 آبان 1388, 10:27 صبح
چگونه میتوان اطلاعات یک ردیف از grid view را در یک جدولsql server ثبت کرد؟

A.S.Roma
شنبه 30 آبان 1388, 12:52 عصر
معمولا" اطلاعات Grid از دیتابیس پر میشه (شما گرید رو به یک DataSource بایند می کنید )

کافیه واسه DataSourceتون یک متد Insert بنویسید.

mialdf
دوشنبه 02 آذر 1388, 13:45 عصر
میشه بیشتر توضیح بدین.
بایند کردن یعنی چی؟

z_bluestar
دوشنبه 02 آذر 1388, 14:19 عصر
خوب اطلاعات Grid view تون رو از کجا پر می کنید ؟؟
از DataSource ؟؟
لطفا Source بذارید تا بیشتر بتونیم کمک کنیم

hezare
دوشنبه 02 آذر 1388, 19:00 عصر
ابتدا با یک باتن روی یک رکورد گرید رو کلیک می کنید بعد در پشت گرید سکتد ولی یوی گرید رو می خونید و با همون آی دی وارد یک متد مثل متد زیر شده و اینزرت می کنید


public void Insert_Into_Payam(string Gender, string Age)

{

SqlConnection Cn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["KalamConnectionString"].ConnectionString);

SqlCommand Insert_Item = new SqlCommand("Insert_To_Payam", Cn);

Insert_Item.CommandType = CommandType.StoredProcedure;

Insert_Item.Parameters.Add("Gender", SqlDbType.Int).Value = Int32.Parse(Gender);
Insert_Item.Parameters.Add("Age", SqlDbType.Int).Value = int.Parse(Age);

Cn.Open();
Insert_Item.ExecuteNonQuery();
Cn.Close();


}

mialdf
جمعه 06 آذر 1388, 12:51 عصر
من میخوام یک لیست روزرو کناب درست کنم.
و این لیست روی جدول rozro ثبت بشه

به این ترتیب که کاربر پس از جست و جو کتاب اطلاعات روی گرید ویو نمایش داده میشه

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

ممنون میشم کسی کمکم کنه من فقط در ثبتش مشکل دارم جست و جو رو نوشتم و اطلاعات نمایش داده میشه ولی بقیه رو نتونستم بنویسم.

از asl server 2008 و virtual studio 2008 و با زبان vb استفاده میکنم

mohammad.sakhidel
جمعه 06 آذر 1388, 13:25 عصر
یه کار بهتر بکن :
برای اینکار به ازای هر سطرت توی گریدویو یک دکمه 'ذخیره' بذار به این صورت :




<asp:TemplateField HeaderText="ذخیره" HeaderStyle-CssClass="gridHeader" ItemStyle-CssClass="gridCell">
<ItemTemplate>
<asp:LinkButton ID="btnEdit" runat="server" CommandName="SaveButton" CommandArgument='<%#Eval("recId") %>' Width="60px" Height="20px" style="margin-top:4px;" >ذخیره</asp:LinkButton>
</ItemTemplate>

</asp:TemplateField>


بعدش توی رویداد rowcommand از گریدویو کد زیر :


if (e.COmmandName == "SaveButton")
{

.
.
.
.

}

mialdf
جمعه 06 آذر 1388, 13:56 عصر
دوست عزیز دستت درد نکنه این راه ی که شما گفتید بهتره ولی در قسمت rowcommand چی چیزی باید بنویسم که اطلاعاتش ثبت بشه روی جدول دیتا بیسم؟؟
منظور از savebutton چیه؟
در ضمن vb.net!!

ahmadsam
جمعه 06 آذر 1388, 17:18 عصر
مثال :برای بدست آوردن مقدار


Int i =(int) datagrid1[0,0].value;
برای ذخیره در بانک


cmd.commandtext=string.format("insert into t1 field1 values({0})",i)
اگر تعداد سطرها زیاد بود اونوقت سطر اول را در آرایه قرار می دهیم

یک نکته : اگه می خواستید نتیجه يك select را در دیتا گرید بریزی و از آنجا دوباره در یک جدول بریزی همزمان می توانی از دستور زیر استفاده کنی که داده را خونده و بر اساس شرط Selectجدول مي ريزه :


Insert Into t2 Select * From t1 Where

mialdf
جمعه 06 آذر 1388, 17:21 عصر
میشه بیشتر توضیح بدین؟ منظور از [0,0] چیه ؟ چه مقادیری باید بزارم؟

mialdf
جمعه 06 آذر 1388, 19:16 عصر
یک نکته : اگه می خواستید نتیجه يك select را در دیتا گرید بریزی و از آنجا دوباره در یک جدول بریزی همزمان می توانی از دستور زیر استفاده کنی که داده را خونده و بر اساس شرط Selectجدول مي ريزه :






برای این کار بعد where باید چی بنویسم؟






من میخوام یک لیست روزرو کناب درست کنم.
و این لیست روی جدول rozro ثبت بشه

به این ترتیب که کاربر پس از جست و جو کتاب اطلاعات روی گرید ویو نمایش داده میشه

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

ممنون میشم کسی کمکم کنه من فقط در ثبتش مشکل دارم جست و جو رو نوشتم و اطلاعات نمایش داده میشه ولی بقیه رو نتونستم بنویسم.

از asl server 2008 و virtual studio 2008 و با زبان vb استفاده میکنم

A.S.Roma
جمعه 06 آذر 1388, 20:10 عصر
یک مثال خیلی ساده نوشتم شما از این ایده بگیر : ( مدل های دیگه هم میشه نوشت )

<asp:SqlDataSource ID="mySrc" runat="server"
ConnectionString="..."
SelectCommand="SELECT * FROM News"
InsertCommand="INSERT INTO News VALUES(@a,@b,@c)">

</asp:SqlDataSource>
<asp:GridView ID="myGrid" runat="server"
DataSourceID ="mySrc">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chBox" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnSubmit" Text="Order" runat="server"
onclick="btnSubmit_Click" />

و
protected void btnSubmit_Click(object sender, EventArgs e)
{
CheckBox myCheckBox = new CheckBox();
foreach (GridViewRow item in myGrid.Rows)
{
myCheckBox = (CheckBox)item.FindControl("chBox");
if (myCheckBox.Checked)
{
mySrc.InsertParameters.Add("a", item.Cells[2].Text);
mySrc.InsertParameters.Add("b", item.Cells[3].Text);
mySrc.InsertParameters.Add("c", item.Cells[4].Text);
mySrc.Insert();
mySrc.InsertParameters.Clear();
}
}
}

ahmadsam
شنبه 07 آذر 1388, 17:58 عصر
اینو من پیدا کردم اگه تونستی انجامش بدی نتیجه درستش رو بزار ، این برای کپی سطر انتخاب شده و فرستادن اون برای پرینت چند خطش نیاز نیست خودت پاک کن :.



DataView dv = new DataView(dbm.db.products);

dv.RowFilter = filter;


dataGridView1.DataSource = dv;


int cpt = dataGridView1.SelectedRows.Count;

if (cpt == 0)

{

MessageBox.Show("You must select at least one row", "Nothing to print", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
return;

}

DataGridViewRow[] rows = new DataGridViewRow[cpt];

dataGridView1.SelectedRows.CopyTo(rows, 0);

PrintPreview pp = new PrintPreview(rows);

pp.ShowDialog();

ahmadsam
شنبه 07 آذر 1388, 18:01 عصر
اینو من پیدا کردم اگه تونستی انجامش بدی نتیجه درستش رو بزار ، این برای کپی سطر انتخاب شده و فرستادن اون برای پرینت چند خطش نیاز نیست خودت پاک کن :.



DataView dv = new DataView(dbm.db.products);

dv.RowFilter = filter;


dataGridView1.DataSource = dv;


int cpt = dataGridView1.SelectedRows.Count;

if (cpt == 0)

{

MessageBox.Show("You must select at least one row", "Nothing to print", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
return;

}

DataGridViewRow[] rows = new DataGridViewRow[cpt];

dataGridView1.SelectedRows.CopyTo(rows, 0);

PrintPreview pp = new PrintPreview(rows);

pp.ShowDialog();





یا از کد زیر :


dataGridView1.SelectedRows[0].Cells[1].Value

یا از کد زیر :

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{

textBox7.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
textBox8.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
}


حالشو ببر :لبخند:

ahmadsam
شنبه 07 آذر 1388, 18:05 عصر
با این کد میتونی با کلیک بر روی هر سطر به اطلاعات فیلدای مورد نظرت توی اون سطر دسترسی داشته باشی
کد:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{

textBox7.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
textBox8.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();

که مثلا برای دست رسی به خانه دوم از اولین سطر انتخاب شده باید از کد زیر استفاده کنید.

کد:
dataGridView1.SelectedRows[0].Cells[1].Value



}

mohammad.sakhidel
یک شنبه 08 آذر 1388, 10:30 صبح
دوست عزیز دستت درد نکنه این راه ی که شما گفتید بهتره ولی در قسمت rowcommand چی چیزی باید بنویسم که اطلاعاتش ثبت بشه روی جدول دیتا بیسم؟؟
منظور از savebutton چیه؟
در ضمن vb.net!!

سلام.
ببین رخداد rowCommand از گریدویو وقتی fire میشه که یک ردیف از گریدویو یک دستوری رو صادر کنه (همونجور که از اسمش پیداست) خوب حالا ، از اونجایی که یک ردیف میتونه چندین مثلاً دکمه برای صدور دستور (Command( داشته باشه ما به هر کدوم یک خاصیت CommandName نسبت میدیم (در مثال بالا من اسمشو گذاشتم SaveButton).
و این رخداد RowCommand یک خاصیت دیگه بنام CommandArgument داره که می تونیم با استفاده از اون کلید (یا هر فیلد دیگه) از ردیف صادر کننده دستور را داشته باشیم (لازمه چون باید بدونیم چه رکوردی رو باید مثلاً ذخیره کنیم یا تغییر یا هرچی...).
یه مثال برای حذف یک رکورد با کلیک روی دکمه ای در ردیفی از گریدویو :

فیلدی از گریدویو رو که می خوایم دکمه 'حذف' باشه :


<asp:TemplateField HeaderText="حذف">
<ItemTemplate>
<asp:LinkButton ID="btnDelete" runat="server" CommandName="DeleteCommand" CommandArgument='<%#Eval("yourRecordId") %>'>حذف</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>


و بعدش توی رخداد RowCommand میگیم که گریدویو جون اگه دستوری که صادر شده اسمش DeleteCommand باشه رکورد مونو که آیدیشو با yourRecordId از طریق CommandArgument فرستادیم مثلاً حذفش کن :




if (e.CommandName == "DeleteCommand")
{
int yourRecordId = Int32.Parse(e.CommandArgument.ToString()); // اگه اینتجر باشه
ُSqlConnection con = new SqlConnection(myConnectionString);
SqlCommand cmd = con.CreateCommand();
try
{
con.Open();
cmd.CommandText = "Delete FROM t_MyTableName Where recId = " + yourRecordId;
cmd.ExecuteNoneQuery();
}
catch
{
}
finally
{
con.Close();
}
}


فقط زحمت vb کردنش به عهده خودته. موفق باشی ، عیدت هم مبارک.

ahmadsam
یک شنبه 08 آذر 1388, 12:25 عصر
این هم کد مورد نظرت برو حالشو ببر :
فقط قبلش باید

using System.Data.OleDb;

بنویسی
در این برنامه فرض بر این است که 13 فیلد داریم برنامه با سی شارپه ولی به راحتی می تونی به وی بی برگردونیش موفق باشی






OleDbCommand cmd1 = new OleDbCommand();
OleDbConnection con1 = new OleDbConnection();
con1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\1.mdb";
cmd1.Connection = con1;
cmd1.CommandText = string.Format("DELETE FROM temp");
con1.Open();
cmd1.ExecuteNonQuery();
con1.Close();
con1 = null;
//////////////////////////////////////////////////////////////
OleDbCommand cmd = new OleDbCommand();
OleDbConnection con = new OleDbConnection();
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\1.mdb";
cmd.Connection = con;
string[] ss = new string[13];
for (int i = 0; i < 13; i++)
{
ss[i] = (string)dataGridView1.SelectedRows[0].Cells[i].Value;
}
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\stress.mdb";
cmd.Connection = con;

حالا با دستور اینسرت اینتو مقدار ها تو وارد جدول می کنی بعد هم ادامه ماجرا

con.Open();
cmd.ExecuteNonQuery();
con.Close();
con= null;