PDA

View Full Version : نمایش برخی از سطرهای گرید ویو با توجه به یک شرط



fardin_esmi
جمعه 31 خرداد 1392, 18:56 عصر
سلام بر اساتید فن
می خواستم بدونم چطور میشه فقط برخی از سطرهای گرید ویو رو نمایش داد؟
مثلا یک query اجرا و نتیجه رو به گریدویو بایند کنیم و پس از اون با توجه به یک شرط خاص فقط سطرهایی از گرید ویو نمایش داده شوند که شامل اون شرط باشند؟
آیا شدنی است؟
ممکن است بپرسید قبل از بایند کردن شرط را در query قرار بده تا نتیجه دلخواه به گرید ویو ریخته شود اما مشکلی که دارم اینست که وقتی می نویسم :


SqlDataAdapter adpt = new SqlDataAdapter("SELECT * from table1 where class.reg_deadline>'"+DateTime.Now+"')", con);
DataTable dtbl=new DataTable();
adpt.Fill(dtbl);

gvSelect.DataSource = dtbl;
gvSelect.DataBind();
این خطا رو میده :


Conversion failed when converting date and/or time from character string.

در حالی که reg_deadline از نوع date time هست .
کسی راه حلی داره ؟
ممنون میشم کمک کنید.

parvizwpf
شنبه 01 تیر 1392, 10:35 صبح
ببین این مدل کدنویسی رو دیگه فراموش کنید بجاش بیاید از پارامترها استفاده کنید:

string strConn = "Data Source = .\\SQLExpress; Initial Catalog = Northwind; Integrated Security = True"; SqlConnection _sql_connection = new SqlConnection(strConn); SqlCommand _sql_command = new SqlCommand("GetDetenions", _sql_connection); _sql_command.CommandType = CommandType.StoredProcedure; SqlParameter param_DATE = _sql_command.Parameters.Add("@_date", SqlDbType.DateTime); DateTime dt = new DateTime(2010,10,11); param_DATE.Value = dt; //dt is a DateTime type defined earlier in c# DataTable data_table = new DataTable(); SqlDataAdapter sql_adapter = new SqlDataAdapter(_sql_command); sql_adapter.Fill(data_table);

fardin_esmi
چهارشنبه 05 تیر 1392, 13:02 عصر
ببین این مدل کدنویسی رو دیگه فراموش کنید بجاش بیاید از پارامترها استفاده کنید:

string strConn = "Data Source = .\\SQLExpress; Initial Catalog = Northwind; Integrated Security = True"; SqlConnection _sql_connection = new SqlConnection(strConn); SqlCommand _sql_command = new SqlCommand("GetDetenions", _sql_connection); _sql_command.CommandType = CommandType.StoredProcedure; SqlParameter param_DATE = _sql_command.Parameters.Add("@_date", SqlDbType.DateTime); DateTime dt = new DateTime(2010,10,11); param_DATE.Value = dt; //dt is a DateTime type defined earlier in c# DataTable data_table = new DataTable(); SqlDataAdapter sql_adapter = new SqlDataAdapter(_sql_command); sql_adapter.Fill(data_table);


مشکلم با پارامترها حل شد اما جواب سوال اولم رو ندادید:
چطور میشه فقط برخی از سطرهای گرید ویو رو با توجه به یک شرط نمایش داد؟ آیا شدنی است؟

AmirGhasemi
چهارشنبه 05 تیر 1392, 15:44 عصر
سلام
بهترين كار اينه كه شرط را سمت SP چك كني
مثلا اگه گريدت را بايند به يك ObjectDataSource‌كرده اي يا بايند به SP كرده اي همان شرط را در سمت SP چك كني

اوبالیت به بو
چهارشنبه 05 تیر 1392, 16:03 عصر
مثلا یک query اجرا و نتیجه رو به گریدویو بایند کنیم و پس از اون با توجه به یک شرط خاص فقط سطرهایی از گرید ویو نمایش داده شوند که شامل اون شرط باشند؟
آیا شدنی است؟

درود بر شما

قبل از عمل بایندینگ باید این کار رو انجام بدید. یعنی مثلا یا در Where clause مربوط به دستور Select و یا اینکه وقتی Select رو زدید اینبار قبل از اینکه DataSet رو به گرید وصل کنید، DataSet رو کوچک تر کنید و یک شرط دیگه روش بگذارید و بعد بایند کلی کنید. یک راه بد دیگه هم هست که در یک حلقه for سطر به سطر از DataSet واکشی شده بخونید و بر اساس شرط سطر رو به گرید ویو اضافه کنید.

اینکه هدف شما این باشه که فقط یکبار Bind کنید و مدام بخواید بدون Select زدن از DataBase گرید ویو رو تغییر بدید امکان پذیر نیست.