آپدیت در جدوال
سلام وقت بخیر asp زبان سی شارپ
من یه جدول دارم داخل sql که درخواستها ثبت میشه در زمان ثبت (وضعیت درخواست) میشه در حال بررسی وقتی کاربر اون درخواستو بخواد لغو بکنه (وضعیت درخواست) میشه لغو شده
میشه بهم بگید اینو چجوری تو سی شارپ بنویسم
من کویری آپدیت میزنم ولی کار نمیکنه میشه راهنمایی کنید
11 پاسخ
من کلا قاطی کردم میشه شما بهم بگید چجوری شماره سطر انتخابی گرید ویو رو میگیریم
خب ببینید تو session دارید درست تنظیمش می کنید ؟ ضمنا فکر نمی کنم session جای مناسبی برای اینکار باشه ، این یه متغییر داخل همین صفحه است ، چرا از همین فرم برش نمی دارید ؟
اضافه کردن دستور executeNoneQuery رو فراموش نکنید.
احتمالا بتونید از کد زیر استفاده کنید :
وقتتون بخیر نمیدونم چرا id Request همش صفر برمیگردونه
تست های بالا رو انجام دادید ؟ row دارید یا null بود ؟
یه عکس از صفحه طراحی شده تون بدید ، باید دید تو هر خط دکمه دارید ؟ بالا یا پایین صفحه فقط یک دکمه دارید ؟
query که به نظر درست میاد.
یه بار تو خود sql اجراش کنید ، مطمئن که بودید درسته. بیاید کد رو debug کنید و روی query یه break بزارید ببینید به اینجای کد میرسه ؟ اگر میرسه مقدار های idRequest رو چک کنید درست باشه و نهایتا ببینید اصلا اجرا میشه یا نه.
ضمنا ! شما اصلا دستور executeQuery رو ننوشتید. باید بین con open و close باشه ، حتی بهتر بود con.open رو هم قبل از sqlcommand می نوشتید. البته چون فقط یه دستوره خیلی این مورد آخر مهم نیست.
executeNoneQuery اینو اضافه کردم
خوب چجوری باید اون ایتم انتخاب شده رو براش query بزنم ببینید یه مدل دیگم نوشتم نشد
if (e.CommandName == "CancelTravel")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = GridRequest.Rows[index];
ViewState["IDRequest"] =row.Cells[0].Text;
int IdRequest = Convert.ToInt32(Session["IdRequest"]);
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["KhodroDB"].ConnectionString);
string query = "UPDATE Tbl_Request SET StatusRequest = 'لغو شده' where IdRequest=" + IdRequest;
SqlCommand scmd = new SqlCommand(query, con);
con.Open();
scmd.ExecuteNonQuery();
con.Close();
}
میشه راهنماییم کنید چطور سطر انتخاب شده رو روش کویری بزنم
protected void BtnYes_Click(object sender, EventArgs e)
{
int IdRequest = Convert.ToInt32(Session["IdRequest"]);
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["KhodroDB"].ConnectionString);
string query = "UPDATE Tbl_Request SET StatusRequest = 'لغو شده' where IdRequest=" + IdRequest; ;
SqlCommand scmd = new SqlCommand(query, con);
con.Open();
con.Close();
فکر نمی کنید اگه جدول و query ونهایتا کدتون رو بزارید راحتتر میشه فهمید مشکلش کجاست ؟
فکر کنم تو این دو خط دارید کاملا همه چیز رو قاطی می کنید.
ViewState["IDRequest"] =row.Cells[0].Text;
int IdRequest = Convert.ToInt32(Session["IdRequest"]);
1 - چک کنید ، index و همین طور row یه وقت null نباشند ، یعنی خط رو درست گرفته باشید.
2- چرا دارید row.Cells[0].Text رو میزید تو viewstate ، بعد session رو به idRequest ؟؟
خب از اول بگید idrequest =row.Cells[0].Text
تازه تو کدتون الان هیچ وقت Session["IdRequest) مقدار دهی اولیه نشده که بخواد چیزی جز صفر برگردونه!