PDA

View Full Version : ویرایش از طریق دیتاگریدویو روی Store Procedure



shima2006
یک شنبه 22 شهریور 1388, 00:44 صبح
سلام دوستان
من برای ویرایش کردن یک جدول از این فرم و این کد استفاده کردم
36838


namespace pjt
{
public partial class editcolor : Form
{
#region Fields...
//private SqlConnection _connection;
private SqlDataAdapter _myAdapter;
private DataSet _myDataset;
private SqlCommandBuilder _myCommandBuilder;
private DataView _myView;
private string _tableName;
private string _query;
#endregion
#region Constructors...
public editcolor()
{
InitializeComponent();
}
#endregion
#region Methods...
private void editcolor_Load(object sender, EventArgs e)
{
}
private void Initialize()
{
_tableName = "color";
_query = "SELECT idcr,name FROM color";

SqlConnection _connection = new SqlConnection("Data Source=.;Initial Catalog=pjt;Integrated Security=True");
_myAdapter = new SqlDataAdapter(_query, _connection);
_myCommandBuilder = new SqlCommandBuilder(_myAdapter);
_myDataset = new DataSet("color");
}
private void LoadData()
{
try
{
_myAdapter.Fill(_myDataset, _tableName);
_myView = _myDataset.Tables[_tableName].DefaultView;
grdContacts.DataSource = _myView;
//grdContacts.DataSource = _myDataset;
//grdContacts.DataMember = _tableName;
}
catch (SqlException sqlEx)
{
MessageBox.Show(sqlEx.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void FilterTextBox_TextChanged(object sender, EventArgs e)
{
_myView.RowFilter = string.Format("name LIKE '{0}%'", textBox1.Text );

}


private void button1_Click(object sender, EventArgs e)
{

}

private void editcolor_Load_1(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'editcolor1.color' table. You can move, or remove it, as needed.
this.colorTableAdapter1.Fill(this.editcolor1.color );
// TODO: This line of code loads data into the 'pjtDataSet12.color' table. You can move, or remove it, as needed.
this.colorTableAdapter.Fill(this.pjtDataSet12.colo r);
Initialize();
//ConfigureDataGrid();
LoadData();
}
private void button1_Click_1(object sender, EventArgs e)
{
try
{
_myAdapter.Update(_myDataset, _tableName);
MessageBox.Show("اطلاعات با موفقيت ويرايش شد");
}
catch (SqlException sqlEx)
{
MessageBox.Show(sqlEx.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
#endregion
}
}
}

این فرم هیچ مشکلی نداره ولی من میخوام همین کار رو به جایه جدول color از طریق یک Store Procedure انجام بدم
و حالا میخوام بدونم آیا اصلا من میتونم این کار رو رویه Store Procedure انجام بدم یا نه؟!
و اگر میشه چطوری ؟ چون وقتی من میخوام روی Store Procedure این ویرایش رو انجام بدم با پیغام خطا مواجه میشم.....

saeeedft
یک شنبه 22 شهریور 1388, 01:13 صبح
nدوست عزیز توی sqldataadapter به جای نام query نام storeprocedure رو بنویسید

shima2006
یک شنبه 22 شهریور 1388, 14:10 عصر
دوست عزیز این کارو کردم ولی نمیشه:متفکر:
یه جایه کار مشکل داره....

مهدی کرامتی
یک شنبه 22 شهریور 1388, 20:40 عصر
به لینک پروژه Stored Procedure Generator که در امضای من هست مراجعه کنید.

این برنامه هم Stored Procedure های پایه رو برای شما میسازه، و هم کلاس های لازم برای دسترسی داده ها رو برای شما میسازه.

ali_md110
یک شنبه 22 شهریور 1388, 22:30 عصر
دوست عزیز برای دیتااداپتور باید مقدار adapter.InsertCommand.CommandType = CommandType.StoredProcedure; قرار بدید
تا شی کوماند بدونه دستور اسکیول یک دستور inline هست یا استورد پروسیجر
یک مثال براتون گزاشتم راهنمایینون میکنه

void insertCat(string objname,string objdes)
{

{
sql = "usp_insertCategory";
cmd = new SqlCommand(sql, cnn);cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Catname", objname);
cmd.Parameters.AddWithValue("@des", objdes);
cnn.Open();
try
{
if (cmd.ExecuteNonQuery() == 1)
{
MessageBox.Show("رکورد ثبت شد");
}
else
{
MessageBox.Show("درج رکورد ناموفق");
}
}

catch (System.Exception ex)
{

MessageBox.Show(ex.Message);
}
finally
{
cnn.Close(); cmd.Dispose(); cmd = null;


}
}
}