PDA

View Full Version : مشکل PageNumber در گرید ویو



m-alizadeh
چهارشنبه 03 مهر 1387, 07:47 صبح
با سلام
.واقعا ديگه از گريد ويو خسته شدم چون خيلي مشکلات داره
من يک گريد ويو در صفحه دارم که بصورت دستي اون رو پر کرده و به بانک اطلاعاتي وصل نموده ام يعني از طريق کد نويسی نه sql datasource
:مشکلي که ايجاد ميشه اينه که وقتي روي شماره صفحه گريد ويو ..123 کليک مي کنم اين پيغام ظاهر ميشه
The GridView 'grd_user' fired event PageIndexChanging which wasn't handled.

.کسي مي تونه راه حل بده
با تشکر قبلي

el_abdollahi
چهارشنبه 03 مهر 1387, 11:47 صبح
خوب این که واضحه! باید برای روال pageindexchanging کد بنویسید. چون ننوشتی این خطا رو میده!


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

m-alizadeh
شنبه 06 مهر 1387, 08:03 صبح
سلام
ممنون از راهنماییتون tarhebartar این کار همزمان امکان پذیر نیست قبلا امتحان کردم.

ولی دوست عزیز el_abdollahi این روالی که شما نوشته اید رو از من ایراد می گیره ، در GridView1.DataSource = GetDataSource(); ،
GetDataSource رو نمیشناسه و error میده من هم جای اون نام ds خودم رو نوشتم ، بعد از این کار پیغامی ظاهر نشد ولی باز مثل ابتدای کار همون پیغام The GridView 'grd_user' fired event PageIndexChanging which wasn't handled رو میده و هیچ فرقی نمی کنه اصلا انگار سراغ این روال نمیره .

ممنون میشم اگه بیشتر توضیح بدید.

با تشکر

samaram
شنبه 06 مهر 1387, 08:08 صبح
سلام. يه نكته اي در سوال دوست عزيز ايجاد كننده ي تاپيك توجهمو جلب كرد كه همين جا مي پرسم. اينكه gridview رو از طريق كدنويسي يا datasource ايجاد و مقدار دهي كنيم با هم تفاوتي داره؟ منظورم توي بحث سرعت و بهينه بودن و... هست. اخه خاطرم هست دوستي يه بار مي گفت باكدنويسي بهتره!

najafzade
شنبه 06 مهر 1387, 09:27 صبح
خوب این که واضحه! باید برای روال pageindexchanging کد بنویسید. چون ننوشتی این خطا رو میده!


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



سلام
آقا من از این روال شما استفاده کردم. ولی تولیستی که عکسش رو ضمیمه کردم اصلا NewPageIndex نمیادش.

اگه میشه لطفا بگین مشکل کار من کجاست؟

peymannaji
شنبه 06 مهر 1387, 10:24 صبح
دوست عزیز راهی که دوستمون گفتن بر اساس آبجکت دیتا سرس هست و بجای کد زیز :


GridView1.DataSource = GetDataSource();


قرار بدید :



GridView1.DataSource = dataset.Tables("TableName");


بجای TableName هم نام دیتا تیبلی که در دیتا ست هست و شما میخواهید آنرا در دیتا گرید نمایش دهید ( از اندیس هم جای نام جدول میتونید استفاده کنید که از 0 شروع میشه ).

موفق باشید .

m-alizadeh
یک شنبه 07 مهر 1387, 07:46 صبح
ممنون آقای peymannaji امتحان میکنم ببینم نتیجه میده یا نه.

و شماآقای najafzade شما دارید این کد رو در روال selectindexchanging مینویسید درستش اینه که در روال PageIndexChanging کدتون رو قرار بدید.

و شما آقای samaram دقیقا نمی دونم آخه من هدفم از این کار این بوده که خودم بصورت دستی کدنویسی کرده باشم.

با تشکر از همگی

m-alizadeh
دوشنبه 08 مهر 1387, 08:00 صبح
با سلام
ممنون آقای peymannaji ولی باز همون که بود هست اصلا انگار سراغ این روال نمیره و اون رو نمی بینه و همون پیغام رو باز میده.


راه حل دیگه ای کسی سراغ نداره؟



ممنون

el_abdollahi
دوشنبه 08 مهر 1387, 08:06 صبح
کدتون اینجا بزارین. شاید سریعتر به نتیجه برسیم.

m-alizadeh
پنج شنبه 11 مهر 1387, 07:47 صبح
با سلام اینم کد asp.net و html من :





using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class Report_Customer : System.Web.UI.Page
{
SqlConnection sql_conn = new SqlConnection();
DataSet ds = new DataSet();
SqlDataAdapter sql_adp = new SqlDataAdapter();
SqlCommand sql_comm = new SqlCommand();
string str_conn;

protected void Page_Load(object sender, EventArgs e)
{
try
{
str_conn = ConfigurationManager.AppSettings.Get(0);
sql_conn.ConnectionString = str_conn;
sql_adp.SelectCommand = new SqlCommand();
sql_adp.SelectCommand.Connection = sql_conn;
sql_comm.Connection = sql_conn;
sql_adp.SelectCommand.CommandType = CommandType.StoredProcedure;
sql_adp.SelectCommand.CommandText = "select_all_customer";
sql_conn.Open();
sql_adp.Fill(ds, "customer_register");
sql_conn.Close();

grd_user.DataSource = ds;
grd_user.DataMember = "customer_register";
grd_user.DataBind();
if (ds.Tables[0].Rows.Count == 0)
{
lbl_er.Text = ".هیچ اطلاعاتی یافت نشد";
}
ds.Clear();
}
catch (Exception exp)
{
sql_conn.Close();
lbl_er.Text = "خطا در انجام عملیات !";
}
}


protected void grd_user_PageIndexChanging(Object sender, GridViewPageEventArgs e)
{
grd_user.PageIndex = e.NewPageIndex;
grd_user.DataSource = ds.Tables.Add("customer_register"); //GetDataSource();
grd_user.DataMember = "customer_register";
grd_user.DataBind();
}








اینم کدhtml گرید ویو :







<asp:GridView ID="grd_user" runat="server" AllowPaging="True" AutoGenerateColumns="False"
BackColor="White" BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px" CellPadding="4"
ForeColor="Black" Height="1px" Style="z-index: 104; left: 0px; position: absolute; top: 144px" Width="1px" PageSize="5" OnSelectedIndexChanged="grd_user_SelectedIndexChanged">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="password" HeaderText="کلمه عبور" SortExpression="password" />
<asp:BoundField DataField="username" HeaderText="نام کاربری" SortExpression="username" />
<asp:BoundField DataField="country" HeaderText="کشور" />
<asp:BoundField DataField="city" HeaderText="شهر" />
<asp:BoundField DataField="post_code" HeaderText="کد پستی" />
<asp:BoundField DataField="fax" HeaderText="شماره فاکس" />
<asp:BoundField DataField="tel1" HeaderText="شماره تماس" />
<asp:BoundField DataField="email" HeaderText="ایمیل" />
<asp:BoundField DataField="organization_name" HeaderText="نام سازمان" />
<asp:BoundField DataField="types" HeaderText="نوع مشتری" />
<asp:BoundField DataField="family" HeaderText="نام خانوادگی" SortExpression="family" />
<asp:BoundField DataField="sname" HeaderText="نام" SortExpression="sname" />
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>




با تشکر

peymannaji
پنج شنبه 11 مهر 1387, 13:36 عصر
GridView1.DataSource = dataset.Tables("TableName");

در ضمن DataMember رو هم بردار چون تو کد بالا این کار اتوماتیک انجام میشه

m-alizadeh
جمعه 12 مهر 1387, 07:53 صبح
سلام

آقای peymannaji فکر کنم یه بار دیگه این کد رو برای من گذاشتین تو پاسخ گویی قبلیتون ، اگه کارم راه افتاده بود که دیگه مشکلی نبود قبلا هم گفتم اولا از این کد error می گیره و میگه از .Table به این طریق نمیشه استفاده کرد دوما مشکل اینه که انگار اصلا این روال رو اجرا نمی کنه . و بود و نبودش فرقی نمی کنه .

ممنون میشم اگه دقیق تر جواب بدید.


با تشکر مجدد.

kezack
جمعه 12 مهر 1387, 10:13 صبح
اين كد من استفاده كردم جواب داد در PageIndexChanging يك دستور select نوشتم و بعد ..


SqlConnection con = new SqlConnection(System.Configuration.ConfigurationMa nager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand("Select * from Product ORDER BY [IdProduct] DESC ");
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
GridView2.PageIndex = e.NewPageIndex;
GridView2.DataSource = ds;
GridView2.DataBind();

اميدوارم بدرد بخوره

elizabet
شنبه 13 مهر 1387, 10:36 صبح
این یه برنامه است برای صفحه بندی گریدویو و دیتالیست

m-alizadeh
سه شنبه 16 مهر 1387, 07:53 صبح
سلام

از همگی ممنون ، مشکل بنده حل شد . اگه یادتون باشه گفته بودم که اصلا این روال رو نمی بینه و سراغ اون نمیره و این به خاطر این بود که OnPageIndexChanging به قسمت کد html ، گرید ویو اضافه نمی شد . کد هایی که عزیزان گذاشته بودند هم استفاده کردم و خیلی خوب جواب داد.

باز هم ممنون از کمک همگی دوستان.
:تشویق::تشویق::تشویق: