PDA

View Full Version : فیلترینگ روی داده های گرید ویو ونمایش نتیجه روی همان گرید



Leyla2011
پنج شنبه 14 اردیبهشت 1391, 22:31 عصر
سلام ـ دوستان من یه grid view دارم که کل اطلاعات مربوط به کتابها را نشان میده

حالا روی این گرید باید امکان searching را داشته باشیم که مثلا توی dropdownlist نام ناشر را انتخاب کنیم ، کتابهای مربوطه را نمایش بده - توی همان گرید


GridView1.DataSource = cSearch.SearchByGroupKala(DdlGroupKala.Text);
GridView1.DataBind();
اما به نتیجه نرسیدم . کسی میدونه باید چی کار کنم؟ تنظیمات دیگه ای داره؟

hamid_shrk
پنج شنبه 14 اردیبهشت 1391, 22:37 عصر
ببینید مثلا شما یک یک کوئری نوشتید تو sqlServer و اونو به یک sqlDataSource بایند کردید و sqlDataSource رو به گریدتون بایند کردید.
حالا برای استور پروسیجرتون یک مقدار ورودی برای سرچ بزارید مثل این کوئری :

@name nvarchar(max),
@city nvarchar(max),
@typeSend nvarchar(max),
@typePayment nvarchar(max)
AS
BEGIN
IF (@name='0')
SET @name=''
IF (@city='0')
SET @city=''
IF (@typeSend='0')
SET @typeSend=''
IF (@typePayment='0')
SET @typePayment=''

SET @name='%'+@name+'%'
SET @city='%'+@city+'%'
SET @typeSend='%'+@typeSend+'%'
SET @typePayment='%'+@typePayment+'%'
SELECT Sales.*,Human.* FROM sales LEFT JOIN Human ON
Sales.idHumanFK=Human.idHuman WHERE
[name] LIKE @name AND city LIKE @city AND typeSend LIKE @typeSend AND typePayment LIKE @typePayment
ORDER BY date DESC

سپس تو sqlDataSource تو بخش DefaultValue مقدارهای Default رو بزارید تا کل رکورد ها رو برای بار اول بازیابی کنه.
سپس تو کلیک سرچتون این کد رو بنوییسی :


string name = txtCustomerName.Text;
string city = ddlCity.Value;
string typePayment = ddlPayType.SelectedItem.Value;
string typeSend = ddlSendType.SelectedItem.Value;
if (name == "")
name = "0";
SDSSelectSales.SelectParameters["name"].DefaultValue = name;
SDSSelectSales.SelectParameters["city"].DefaultValue = city;
SDSSelectSales.SelectParameters["typeSend"].DefaultValue = typeSend;
SDSSelectSales.SelectParameters["typePayment"].DefaultValue = typePayment;
grvSales.DataBind();

تو مثالی که زدم SDSSelectSales اسم sqlDataSource هست ، وشما واسه سرچتون میتونید پارامترهای کمتری رو دریافت کنید .

Leyla2011
پنج شنبه 14 اردیبهشت 1391, 23:01 عصر
ممنون اما درباره sqlDataSource تو بخش DefaultValue مقدارهای Default میشه بیشتر توضیح بدید -
فرقی نمیکنه که از sqldatasource استفاده کنم یا ObjectDataSource1

hamid_shrk
پنج شنبه 14 اردیبهشت 1391, 23:10 عصر
اول اینکه پیشنهاد میکنم از SqlDataSource استفاده کنید چون امکانات بهتری رو در اختیارتون میزاره و خودش خیلی بهینه هست.
وقتی که شما گرید رو به sqlDataSource بایند کنید تو مراحل بایند وقتی که استورپروسیجر رو دارید معرفی میکنید خودش ازتون میخواید که برای پارامترهای ورودی استورپروسیجر مقدار DefaulValue قرار بدید که شما میتونید همونجا با توجه به پروسیجرتون که با چه مقدارهایی تمام رکوردهارو واکشی میکنه مقدار پیش فرض رو اعمال کنید ،مثلا برای پروسیجر من مقدار default برای تمام فیلدها اگر '0' باشد تمام رکوردهارو واکشی میکنه ، علاوه بر این روش شما میتونید Default Value ها رو تو page load هم تعیین بکنید به اینصورت :


if (!IsPostBack)
{
SDSSelectSales.SelectParameters["name"].DefaultValue = "0";
SDSSelectSales.SelectParameters["city"].DefaultValue = "0";
SDSSelectSales.SelectParameters["typeSend"].DefaultValue = "0";
SDSSelectSales.SelectParameters["typePayment"].DefaultValue = "0";
grvSales.DataBind();
}