PDA

View Full Version : سوال: ارتباط یک query به linqdatasource



crazy_1892
پنج شنبه 24 آذر 1390, 21:04 عصر
سلام دوستان من یک کوئری نوشتم که به شکل زیر است


DataClassesDataContext LL = new DataClassesDataContext();
var query = (from c in LL.News
where c.status == true
select c).Skip(0).Take(3);



حالا یک linqdatasource هم ایجاد کردم


LinqDataSource linqq = new LinqDataSource();


چی جوری میتونم این کوئری را به این linqdatasource وصل کنم
می خوام باز این llinqdatasource را به یک repeater وصل کنم
دوستان لطف کنید کمک کنید؟؟

salehbagheri
جمعه 25 آذر 1390, 17:40 عصر
کدهاتون رو باید از طریق ObjectDataSource به یک DataGrid مرتبط کنید!

crazy_1892
جمعه 25 آذر 1390, 19:58 عصر
دوست عزیزم من مشکلی با اتصال گرید ندارم حتی مشکلی با اتصال linqdatasource با REpeater هم ندارم ولی باید از طریف کد نویسی این اتصال را برقرار کنم جون میخوام page بندی دستی انجام بدم

salehbagheri
جمعه 25 آذر 1390, 23:27 عصر
دوست عزیزم من مشکلی با اتصال گرید ندارم حتی مشکلی با اتصال linqdatasource با REpeater هم ندارم ولی باید از طریف کد نویسی این اتصال را برقرار کنم جون میخوام page بندی دستی انجام بدم

من که نمیفهمم! چه نیازی به پیچاندن لقمه دور سر هست؟

کافیه یه متد به شکل زیر بنویسید:


public static List<News> GetNews(int StartIndex = 0, int Count = 5)
{
YourDataContext db = new YourDataContext();
var Query = (from N in db.tblNews orderby N.AddedDate descending select N).Skip(StartIndex).Take(Count);
List<News> NewsList = new List<News>();
foreach (tblNews Row in Query)
{
News News = new News()
{
Text = Row.Text,
};
NewsList.Add(News);
}
db.Dispose();
return NewsList;
}


و بعد به این شکل استفاده کنید:


MyRepeater.DataSource = MyNameSpace.GetNews();

crazy_1892
شنبه 26 آذر 1390, 00:44 صبح
دوست عزیز من در این قسمت نمی تونم فیلد ها ی حدولم را معرفی کنم مشکلش چیه؟

News Newsss = new News()
{
/////////////////////
};

salehbagheri
شنبه 26 آذر 1390, 10:16 صبح
مشکلش اینجاست که شما کلاسی به نام News تعریف نکردید!

یک کلاس به نام News تعریف کنید که دارای چند Property باشد که محتویات جدول خبر را بتوانید در نمونه ای از آنها ذخیره کنید!

crazy_1892
شنبه 26 آذر 1390, 18:48 عصر
ببخشید آقای باقری سوال های مبتدی به این شکل تا حالا کار نکرده بودم ممنون از زاهنماییتون مشکل قبلی حل شد
ولی MyNameSpace.GetNews();


MyNameSpace چی هست؟؟

raziee
یک شنبه 27 آذر 1390, 11:31 صبح
ببخشید آقای باقری سوال های مبتدی به این شکل تا حالا کار نکرده بودم ممنون از زاهنماییتون مشکل قبلی حل شد
ولی MyNameSpace.GetNews();


MyNameSpace چی هست؟؟
منظور آدرس برای رسیدن به کلاس هست.
مثلا اگه من پروژه ای داشته باشم با نام MyApp و پوشه ای به نام Service و کلاسی با نام MyClass که یک متد static با نام GetNews داشته باشم برای دستری و استفاده از متد باید بنویسم:
MyRepeater.DataSource = MyApp.Service.MyClass.GetNews();


اگر کتد GetNews در همان کلاسی که دارید کد نویسی میکنید مثلا Default.aspx.cs نیازی به ایتفاده از NameSpace نیست!!

crazy_1892
یک شنبه 27 آذر 1390, 12:52 عصر
سلام دوست عزیز من کد هامو به شکل زیر نوشتم ولی هیچ چیز نمایش نمیده
کلاس news


public class News
{
public int Id { set; get; }
public string Sub { set; get; }
public string Des { set; get; }
public string Date { set; get; }
public bool Status { set; get; }

}



تابع GeTNews


public static List<News> GetNews(int StartIndex = 0, int Count = 5)
{
MyClass Myclass=new MyClass();
DataClassesDataContext Cld = new DataClassesDataContext();
var query = (from C in Cld.news1s
orderby C.Id descending
select C).Skip(StartIndex).Take(Count);

List<News> NewsList = new List<News>();
foreach (news1 Row in query)
{
News News = new News()
{
Id=Row.Id,Sub=Row.Sub,Des=Row.Descrip,Status=Row.s tatus,Date=Myclass.ToSHamsi1(Row.Date)

};
NewsList.Add(News);
}
Cld.Dispose();
return NewsList;
}



و در نهایت نمایش در لود صفحه

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

RepaterNews.DataSource = GetNews();

}
}

A.S.Roma
یک شنبه 27 آذر 1390, 18:55 عصر
این خط رو هم بهش اضافه کنید :
RepaterNews.DataBind();