PDA

View Full Version : مشکل در ردیف datagride از صفحه دوم و سوم و...



maryam_jamshid
چهارشنبه 12 اردیبهشت 1386, 17:28 عصر
من کد های مربوط صفحه بندی و ردیف Datagride (که در این تالار مطرح شده بود) رو به کار بردم ولی فقط صفحه اول و دوم datagride کار میکنه یعنی اگر صفحه دوم از ردیف 10 تا 20 است بقیه صفحات هم از 10 تا 20 است!!!

babi_wd
چهارشنبه 12 اردیبهشت 1386, 17:31 عصر
کد چی بوده
میزاشتیش لاقل

maryam_jamshid
چهارشنبه 12 اردیبهشت 1386, 18:01 عصر
Private Sub ListUser_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEvent Args) Handles ListUser.PageIndexChanged
ListUser.CurrentPageIndex = e.NewPageIndex
ListUser.DataBind()

End Sub
Function counter() As String
Count = Count + 1
Return Count.ToString
End Function
ردیف رو از نوع templatebutton گذاشتم و یه label رو در item template مربوط datagride گذاشتم و در databinding مربوط به label خصوصیت text رو به counter وصل کردم.

raravaice
پنج شنبه 13 اردیبهشت 1386, 11:34 صبح
Sub bindgrid()
con = New SqlConnection(strcon)
dastoor = "دستورات sql"
da = New SqlDataAdapter(dastoor, con)
ds = New DataSet
con.Open()
da.Fill(ds, "نام جدول")
pardakhtha.DataSource = ds
pardakhtha.DataBind()
con.Close()
end sub


بانکت رو توی یه سابروتین بخون



PrivateSub pardakhtha_PageIndexChanged(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEvent Args) Handles pardakhtha.PageIndexChanged
pardakhtha.CurrentPageIndex = e.NewPageIndex
Call bindgrid()
EndSub


بعد وقتی صفحه عوض میشه دوباره بخونش

خاصیت Allowpaging جدولت هم true کن مشکل حله

موفق باشی

maryam_jamshid
پنج شنبه 13 اردیبهشت 1386, 19:12 عصر
ممنونم از کمکهاتون ولی من در واقع مشکلم در اینه که بارفتن در صفحات دیگه شماره ردیفم ثابت میمونه همانطور که در بالا گقتم وقتی به صفحه دوم میرم اگر صفحه اول از 1 تا 10با شه و صفحه دوم از 20 تا 30، صفحات سوم و...هم از 20 تا 30 یعنی شماره ردیف اینطوریه و در نشون دادن همه محتویات جدول مشکلی نداره و فقط شماره ها ثابت میمونند!!!
من ردیف رو از نوع templatebutton گذاشتم و یه label رو در item template مربوط datagride گذاشتم و در databinding مربوط به label خصوصیت text رو به counter وصل کردم.
کد ها رو براتون گذاشتم.


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'view
Dim strcon As String
strcon = ConfigurationSettings.AppSettings("MyConnection")
Dim connect = New SqlConnection(strcon)

connect.Open()
strsql = "select * from lu_TeacherEmtiaz"
cmd = New SqlCommand(strsql, connect)
cmd.ExecuteNonQuery()
SqlDataAdapter1.Fill(ds, "lu_TeacherEmtiaz")
connect.Close()
TeacherEmtiazTotal.DataSource = ds
TeacherEmtiazTotal.DataBind()
End Sub
Function counter() As String
count = count + 1
Return count.ToString
End Function
Sub bindgrid()
'view
Dim strcon As String
strcon = ConfigurationSettings.AppSettings("MyConnection")
Dim connect = New SqlConnection(strcon)
connect.Open()
strsql = "select * from lu_TeacherEmtiaz"
cmd = New SqlCommand(strsql, connect)
cmd.ExecuteNonQuery()
SqlDataAdapter1.Fill(ds, "lu_TeacherEmtiaz")
connect.Close()
TeacherEmtiazTotal.DataSource = ds
TeacherEmtiazTotal.DataBind()
End Sub
Private Sub TeacherEmtiazTotal_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEvent Args) Handles TeacherEmtiazTotal.PageIndexChanged
TeacherEmtiazTotal.CurrentPageIndex = e.NewPageIndex
' TeacherEmtiazTotal.DataBind()
Call bindgrid()
End Sub

maryam_jamshid
شنبه 15 اردیبهشت 1386, 13:11 عصر
یعنی هیچکس نمیتونه کمک کنه؟؟

Mojtaba_ss
شنبه 15 اردیبهشت 1386, 13:39 عصر
دوست عزیز من در جریان کلی سوالتون نبودم
اما اگه مشکلتون فقط تو نوشتن ردیف برای یه سلوله از کد یر استفاده کنید،من با سی شارپ اونو نوشتم و تو پروژه های واقعی هم کار می کنه:
یه <asp:BoundField /> به لیست <Columns> گریدویو اضافه کنید و توی ایونت
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
کد های زیر رو بنویسید:


if (e.Row.DataItemIndex >= 0)
{
if (e.Row.RowType.ToString() != ListItemType.Header.ToString() && e.Row.RowType.ToString() != ListItemType.Footer.ToString())
{
e.Row.Cells[6].Text = Convert.ToString(e.Row.DataItemIndex + 1);
}
}

اندیس <asp:BoundField /> من 6 هستش
این کد رو امتحان کنید اگه به نتیجه نرسیدید بگید تا کد کاملشو بهتون بدم
یه مشکل دیگه هم دارید اونم اینکه چون تازه عضو این سایت شدم نمی دونم فایل های ضمیمه رو از کجا باید وارد کنم،پس باید بهم بگید از کجا تا براتون بزارمش:چشمک:
موفق باشید!

maryam_jamshid
شنبه 15 اردیبهشت 1386, 19:08 عصر
ببینید من نمیدونم دیگه چه جوری توضیح بدم!!!
من در قسمت های بالا مفصل توضیح دادم .ردیف من کار میکنه فقط برای دو صفحه اول بعد از اون اعداد ردیف برای صفحات دیگر datagride تکرار میشه یعنی مثلا 10 تا 20.
ضمنا من با vb.net مینویسم.
برای ضمیمه کردن فایل در بخشی که به تاپیک جواب میدهید،در پایین ،بخش وی‍گیهای بیشتر ضمیمه فایل وجود داره(لطفا با vb.net بنویسید.)
قسمت های اول این تاپیک را لطفا بخوانید.

Mojtaba_ss
یک شنبه 16 اردیبهشت 1386, 08:07 صبح
دوست عزیز شما از روش Bind استفاده نکردید.
روشی که من ازش استفاده کردم اینکه یه کنترل sqlDataSource رو به GridView خودم Bind می کنم و در ایونت RowDataBound مربوط به GridView شکل و شمایل کلی نشون دادن سطرها و ستون ها رو مشخص می کنم.تو این روش نیازی هم نیست که شما برای paging کد بنویسید.

ضمنا من با vb.net مینویسم.
تبدیل کدهای VB به #C هم کار سختی نیست.
موفق باشید!

maryam_jamshid
یک شنبه 16 اردیبهشت 1386, 13:12 عصر
من sqlDataSource و GridView رو پیدا نکردم ضمنا با vs.net2003 کار میکنم

Mojtaba_ss
یک شنبه 16 اردیبهشت 1386, 14:50 عصر
دوست عزیز sqlDataSource و GridView تو 2005 اضافه شدن.
تو فایل های ضمیمه مثال 2003 رو گذاشتم که همه چیز رو در بر میگیره.
من قبلا از اون استفاده می کردم.
البته این کدم با #C هستش،امیدوارم که اینبار مشکلت حل شه!!!!