PDA

View Full Version : مشکل در Paging



Arezoo62
جمعه 16 دی 1390, 11:19 صبح
بچه ها واقعا رفته رو اعصاب
من با این کدها به درستی اطلاعات دیتا بیس و میارم تو gridview
اما وقتی Paging = true می کنم به این ارور می گیره:
این کدی که ارور می گیره:
GridView1.DataBind();

این کل کد:

if (!IsPostBack)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();

SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();

con.Close();
}

دوستان ازتون خواهش می کنم من خیلی تو سایتهای ایرانی و خارجی سرچ کردم اما اصلا نفهمیدم چی به چیه
چه جوری میشه خاصیت paging داد

fakhravari
جمعه 16 دی 1390, 11:36 صبح
گرید

onpageindexchanging="GridView1_PageIndexChanging"

کد
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}

Arezoo62
جمعه 16 دی 1390, 11:58 صبح
اینو اضافه کردم کلا چیزی نشون نمیده (کلا gridView محو شد)
ارور هم نمیده

sarapepors
جمعه 16 دی 1390, 17:09 عصر
شما باید در رویداد pageindexchanging مربوط به گرید ویو کدی رو که جناب fakhravari گفتن بنویسین هیچ مشکلی به وجود نمیاد و به درستی کار میکنه.

Arezoo62
جمعه 16 دی 1390, 17:47 عصر
دوست عزیز باور کنید کار نمیکنه
من از این کدها استفاده کردم خواهش می کنم کمکم کنید

با این کد سی شارپ دیتا بیس فراخوانی کردم:
public partial class News : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();

SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
//GridView1.DataBind();

con.Close();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
}


این هم کد html تولید شده:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
ShowHeader="False" Width="100%" PageSize="7" BackColor="White"
BorderColor="#CC9966" BorderStyle="None" BorderWidth="0px"
GridLines="None" AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging"
>
<Columns>
<asp:TemplateField>
<ItemTemplate>

<table class="style2" dir="rtl">
<tr>
<td class="style5">
&nbsp;<asp:Image ID="Image1" runat="server"
ImageUrl='<%# Eval("Pic","Pics/{0}") %>' Height="80px" Width="95px" />
</td>
<td>
<div>
<asp:HyperLink ID="HyperLink2" runat="server" Font-Bold="True"

NavigateUrl='<%# Eval("NewsID","ShowNews.aspx?Code={0}") %>'
Text='<%# Eval("Title") %>' ToolTip='<%# Eval("Title") %>'></asp:HyperLink>
<br />
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Abstract") %>'></asp:Label>
&nbsp;</div>
</td>
</tr>
</table>
<div align="center">
<asp:Label ID="Label3" runat="server" Font-Size="8pt" style="color: #999999"
Text='<%# Eval("AddDate") %>'></asp:Label>
<span class="style6">| </span>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("NewsID","ShowNews.aspx?Code={0}") %>'>ادامه خبر ...</asp:HyperLink>
</div>
<hr width="330" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


خواهش می کنم کمکم کنید ...
وقتی کاری که این اقا گفتن انجام دادم گرید ویو کلا نمایش داده نمیشه

reza4359
جمعه 16 دی 1390, 18:51 عصر
سلام به این صورت عمل کنید
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();


SqlDataAdapter sda = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();

con.Close();
}
موفق باشید

Arezoo62
جمعه 16 دی 1390, 20:26 عصر
سلام به این صورت عمل کنید
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();


SqlDataAdapter sda = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();

con.Close();
}
موفق باشید

سلام
ممنونم از پاسختون
این کدی که قرار دادید و دقیقا تو pageindexchanging قرار دادم و pagging رو true کردم
اما اصلا gridview بعدش دیده نمیشه
باید چیکار کنم بدجوری گیر افتادم

reza4359
جمعه 16 دی 1390, 20:37 عصر
من الان دارم از این کد استفاده میکنم و خوب جواب میده
پس مشکل از paging نیست
اگه میخواید صفحه توت رو ضمیمه کنید تا واستون درستش کنم

fakhravari
جمعه 16 دی 1390, 20:42 عصر
با سلام
دستورات اول را بدون IsPostBack انجام دهید:متفکر:
//GridView1.DataBind();
باید // بردارید
GridView1.DataBind(); باید باشد

reza4359
جمعه 16 دی 1390, 20:43 عصر
دوست من شما کد داخل page_load رو اینجوری قرار بدید و از datareader استفاده نکنید
if (!IsPostBack)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";
SqlCommand cmd = new SqlCommand(query, con);

con.Open();


SqlDataAdapter sda = new SqlDataAdapter(query, con);

DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

con.Close();
}
اینو امتحان کنید فکر کنم درست بشه

Arezoo62
جمعه 16 دی 1390, 20:52 عصر
دوست من شما کد داخل page_load رو اینجوری قرار بدید و از datareader استفاده نکنید
if (!IsPostBack)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";
SqlCommand cmd = new SqlCommand(query, con);

con.Open();


SqlDataAdapter sda = new SqlDataAdapter(query, con);

DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

con.Close();
}
اینو امتحان کنید فکر کنم درست بشه

دوست عزیز این کدی که قرار دادید و تو بخش Page_lode قرار دادم
و بعدش تو PageIndexChanging این کد رو قرار دادم:
GridView1.PageIndex = e.NewPageIndex;
و در اخر Paging رو true کردم.

gridView و اطلاعاتش و نشون داد به درستی اما paging فعال نشده
دوستان بدجوری گیر افتادم به نظورت من پارامتر خاصی رو تو کد html جا نذاشتم؟

reza4359
جمعه 16 دی 1390, 20:55 عصر
داخل PageIndexChanging همون کدی رو که گذاشتم رو بذارید

Arezoo62
جمعه 16 دی 1390, 20:59 عصر
تو Page_Lode این کدهاست:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();
SqlDataAdapter sda = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

//SqlDataReader dr = cmd.ExecuteReader();
//GridView1.DataSource = dr;
//GridView1.DataBind();

con.Close();
}
}

و تو PageIndexChanging این کدها:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["FarslaneDataBaseConnectionString"].ConnectionString);

string query = "select TOP 7 * from Newss ORDER BY NewsID DESC";

SqlCommand cmd = new SqlCommand(query, con);

con.Open();
SqlDataAdapter sda = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.PageIndex = e.NewPageIndex;

SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();

con.Close();
}

reza4359
جمعه 16 دی 1390, 21:05 عصر
کدها که درسته و من دارم از این ها استفاده میکنم حتما مشکل از جای دیگست

reza4359
جمعه 16 دی 1390, 21:16 عصر
اینم یک نمونه

fakhravari
جمعه 16 دی 1390, 21:24 عصر
100% جواب میده
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ASPNETDBConnectionString1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select titr from T_news";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();

if (dt.Rows.Count > 0)
{
Label1.Text = "موردی یافت شد";

GridView1.DataSource = dt;
GridView1.DataBind();

}
else
{
Label1.Text = "موردی یافت نشد";

}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}

Arezoo62
جمعه 16 دی 1390, 21:34 عصر
دوست عزیز مشکلم و حل کردی اگه می شد 100 تا تشکر میزدم براتون
فقط اگه بخواهم به شماره های صفحات یک style بدم مثلا مثل برنامه نویس باید کجا بدم؟


اینم یک نمونه

دوست عزیز مشکلم و حل کردی اگه می شد 100 تا تشکر میزدم براتون
فقط اگه بخواهم به شماره های صفحات یک style بدم مثلا مثل برنامه نویس باید کجا بدم؟

دوستان مشکل از دستور select تو قسمت
top 7 بود

sg.programmer
جمعه 16 دی 1390, 22:24 عصر
فقط اگه بخواهم به شماره های صفحات یک style بدم مثلا مثل برنامه نویس باید کجا بدم؟


اینو ببین (http://barnamenevis.org/showthread.php?321750-%D9%82%D8%A7%D9%84%D8%A8-%D8%A2%D9%85%D8%A7%D8%AF%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-gridview-pager)

این دو نمونه را هم ببین

tazekaram
جمعه 25 فروردین 1391, 16:53 عصر
من از كدهاي اينجا استفاده كردم و مشكلم حل شد.اما يه مشكل ديگه پيدا شد.
گريد من با يك جستجو پر وايجاد ميشه و هم گريد و هم جستجوم تو يك صفحه هست.وقتي از نتيجه يك جستجو تو گريد مثلا صفحه 3 رو انتخاب ميكنم مياره واگه بعدش دوباره جستجو بزنم و نتيجه اين جستجو فقط يك صفحه باشه(صفحه 3 نداشته باشه)ديگه هيچي نشون نميده و اگه داشته باشه نشون ميده.در واقع انگار بايد دوباره از اول يه جوري تنظيم كنم كه وقتي دكمه جستجو رو زدم گريد به صفحه 1 تنظيم شه.اما نميدونم چطوري؟؟

ghbn1362
جمعه 25 فروردین 1391, 17:30 عصر
باید دوستان توجه داشته باشن صفحه بندی مطالب به خاطر نمایش بهتر و از آن مهمتر کاهش حجم صفحه و بالا بردن سرعت بارگذاری صفحات است در روشی که شما دنبال می کنید فقط صفحه بندی ایجاد کرده و مطالب را بهتر نمایش می دهید ولی در طول زمان و افزایش تعداد صفحات صفحه شما بسیار سنگین و کد خواهد شد زیرا تمامی اطلاعات را در صفحه بارگذاری نموده و فقط آن ها نمایش نمی دهید!
در پیوست من یک روش بهینه با نمونه کد را برایتان ارسال نموده ام این روش فقط اطلاعات صفحه نمایشی را بارگذاری می نماید و به همین خاطر صفحه شما هر چقدر هم اطلاعات زیاد باشد سنگین نخواهد شد همچنینی به خاطر استفاده از Store-procedure کار بسیار حرفه ای تر ، تمیز تر با قابلیت مدیریت بهتر است

fakhravari
جمعه 25 فروردین 1391, 18:01 عصر
یه نمونه دیگه
http://barnamenevis.org/showthread.php?322558-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-Custom-Paging-%D8%AF%D8%B1-GridView-%D8%A8%D8%A7-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-Ajax/page1