PDA

View Full Version : سوال: مشکل در صفحه بندی گرید ویو



ya30ien2
سه شنبه 09 آبان 1391, 12:28 عصر
دوستان من از کد زیر برای نمایش اخبار استفاده میکنم
1-گرید رو صفحه بندی کردم اما روی پیج 2 کلیک میکنم صفحه خالی نشون میده
2-چطور میتونم لیبل مربوط به اخبار رو محدود به نمایش 50حرف کنم
3-چطوری میتونم بر اساس تاریخ مرتب کنم یعنی جدید بالاتر باشه



<div class="div1">

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" CellPadding="0" GridLines="None" AllowPaging="True"
PageSize = "3" onpageindexchanging="GridView1_PageIndexChanging" >
<Columns>
<asp:TemplateField>
<ItemTemplate>

<div class="div2">
&nbsp; » &nbsp;<asp:Label ID="Label1" Font-Size="18px" ForeColor="White" runat="server" Text='<%# Eval("Subject") %>'></asp:Label>
<br />
&nbsp; نویسنده : &nbsp;<asp:Label ID="Label3" runat="server" Text='<%# Eval("TUser") %>'></asp:Label>

</div>
<div class="div3">
<asp:Label ID="Label2" runat="server" style=" max-width:800px;" Text='<%# Eval("Text") %>'></asp:Label>

</div>
<div style=" margin-bottom:20px; margin-left:20px;" align="left">
<asp:Button ID="LinkButton1" BackColor="White" class="button" text="ادامه مطلب ..." runat="server" PostBackUrl='<%# Eval("ID","Page.aspx?Code={0}") %>' ></asp:Button>
</div>
</ItemTemplate></asp:TemplateField>
</Columns>
</asp:GridView>
</div>


<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [News]">
</asp:SqlDataSource>


string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
List<News> temp1 = new List<News>();
List<News> temp2 = new List<News>();
List<News> temp3 = new List<News>();
List<News> temp4 = new List<News>();
List<News> temp5 = new List<News>();
List<News> list = new List<News>();
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection(conn);
if (IsPostBack != true)
{
cmd.CommandText = "SELECT id,subject,text,usern FROM News";
cmd.Connection = con;


con.Open();
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (!dr.HasRows)
{
dr.Close();
}
else
{

while (dr.Read())
{
News temp = new News();
temp.Id = dr.GetInt32(0);
temp.Subject = dr.GetString(1);
temp.Text = dr.GetString(2);
temp.Tuser = dr.GetString(3);

list.Add(temp);
}
dr.Close();
}
GridView1.DataSource = list;
GridView1.DataBind();


}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}

mohammad_kazem
سه شنبه 09 آبان 1391, 12:46 عصر
سلام دوست عزیز
درمورد سوال 2 باید بگم که اگه توی ستون خبرت یه لیبل یا تکست باکس بزاری شاید بتونی اونو محدود کنی . البته خودم تا حالا همچین کاری نکردم ولی حدس میزنم که بشه.
درمورد سوال 3 خدمتت عرض کنم که باید وقتی که داده هاتو از بانک لود میکنی براساس تاریخ و بصورت نزولی مرتب کنی.
موفق باشید

ya30ien2
چهارشنبه 10 آبان 1391, 00:47 صبح
کسی نبود ما رو راهنمایی کنه ؟

fakhravari
چهارشنبه 10 آبان 1391, 08:03 صبح
GridView1.DataSource = dr; GridView1.DataBind();


GridView1.DataSource = dr;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();

ya30ien2
چهارشنبه 10 آبان 1391, 10:06 صبح
GridView1.DataSource = dr; GridView1.DataBind();


GridView1.DataSource = dr;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();


لطفا اگه میشه درون کد جاسازی کنید
چون هر کجا کدها رو میزارم اجرا همونه

fakhravari
چهارشنبه 10 آبان 1391, 11:56 صبح
لیست چرا دیگه!!!
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
............
GridView1.DataSource = dr;
GridView1.DataBind();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
اگر نشد


protected void GridView_Users_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
GridView_Users.DataSource = ClsManagement_User.Users_All();
GridView_Users.DataBind();
GridView_Users.PageIndex = e.NewPageIndex;
GridView_Users.DataBind();
}
catch
{ Message.MessageBox_Script("اخطار در تغیر صفحه ها", this); }
}

ya30ien2
چهارشنبه 17 آبان 1391, 07:31 صبح
لیست چرا دیگه!!!
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
............
GridView1.DataSource = dr;
GridView1.DataBind();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
اگر نشد


protected void GridView_Users_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
GridView_Users.DataSource = ClsManagement_User.Users_All();
GridView_Users.DataBind();
GridView_Users.PageIndex = e.NewPageIndex;
GridView_Users.DataBind();
}
catch
{ Message.MessageBox_Script("اخطار در تغیر صفحه ها", this); }
}


آقای فخر آوری اگه امکانش هست بگید چطوری اطلاعات رو بریزم داخل SqlDataReader بطوری که بتونم اطلاعات رو
به کلاس هم بفرستم و مثل قبل بتونم اطلاعات رو جزء به جزء درون کنترل ها بریزم که گرافیک زیبایی داشته باشم
ممنون میشم بهم کمک کنید

fakhravari
چهارشنبه 17 آبان 1391, 13:13 عصر
سوال شما متوجه نشدم؟
هر کدوم خروجی دارن بیشترین کاربرد دیتاتیبل داره .
یه مثالی بزن

ya30ien2
چهارشنبه 17 آبان 1391, 20:01 عصر
ببینید من قبلا کد پست اول رو از مثال های خود شما پیدا کردم
هیچ مشکلی هم نداره
اما وقتی میخواستم اطلاعات بصورت محدود در صفحه نمایش بدم یعنی 10 فیلد صفحه بندی بشه
شما گفتید از لیست دیگه نمیخواد استفاده کنی
گفتید از SqlDataReader باید استفاده بشه
و حالا اینکه میخوام مثل مثال قبل طوری باشه که اطلاعات به کنترل ها ارسال بشه
چون من قبلا گرافیک نمایش پست ها رو طراحی کردم فقط همین صفحه بندی مشکل داره
لطفا اگه میشه کدنویسی رو بگید چطوری تغییر بدم
اگه مثال هم داشته باشید ممنون میشم

fakhravari
پنج شنبه 18 آبان 1391, 00:57 صبح
ببنید کلا در پست اول 3 تا سوال کردین که من
پست 6 جواب سوال 1
سوال 2 باید از sub string استفاده کنید
سوال 3 باید مرتب سازی بر اساس تاریخ کنید.

شما همان خروجی dr = cmd.ExecuteReader(); بدین به گرید.

protected void GridView_Users_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
GridView_Users.DataSource = Dr;
GridView_Users.DataBind();
GridView_Users.PageIndex = e.NewPageIndex;
GridView_Users.DataBind();
}
catch
{ Message.MessageBox_Script("اخطار در تغیر صفحه ها", this); }
}

ya30ien2
شنبه 20 آبان 1391, 23:28 عصر
دوستان لطفا یکی به من کمک کنه
هر کاری میکنم آخرش گرید خالی نشون میده



if (!IsPostBack)
{

List<News> temp1 = new List<News>();
List<News> temp2 = new List<News>();
List<News> temp3 = new List<News>();
List<News> temp4 = new List<News>();
List<News> temp5 = new List<News>();
List<News> list = new List<News>();

string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(conn);

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT Id,Titel,Text,Author,Date FROM News ";
cmd.Connection = con;
con.Open();

dr = cmd.ExecuteReader();
while (dr.Read())
{
News temp = new News();
temp.Id = dr.GetInt32(0);
temp.Title = dr.GetString(1);
temp.Text += dr.GetString(2);
temp.Author = dr.GetString(3);
temp.Date = dr.GetString(4);
list.Add(temp);
}
GridView1.DataSource = dr;
dr.Close();

con.Close();

}

ya30ien2
دوشنبه 22 آبان 1391, 19:34 عصر
کسی نبود منو راهنمایی کنه؟

mhq1368
دوشنبه 22 آبان 1391, 19:51 عصر
سلام
شما میتونید از ویزارد گریدویو استفاده کنید راحتتره که من خودم هم ازویزارد گرید ویو استفاده میکنم

ya30ien2
سه شنبه 23 آبان 1391, 10:16 صبح
سلام
شما میتونید از ویزارد گریدویو استفاده کنید راحتتره که من خودم هم ازویزارد گرید ویو استفاده میکنم
لطف نمونه بزارید
چون فکر میکنم اینجوری برای طراحی و گرافیک به مشکل بر می خورم