PDA

View Full Version : مشکل با DataGrid



h.alizadeh
جمعه 13 مهر 1386, 10:35 صبح
سلام

من می خوام روی DataGrid م خاصیت Sorting رو بزارم+ اینکه می خوام ستونهای دیتا گرید رو خودم تعیین کنم و هدر ستونهارو هم همینطور و دیتاگرید رو در قالب یک جدول نشون بدم با تگ <table>

بخاطر این می خوام اینکار رو بکنم چون می خوام که روی ستونهای جدول شرط بزارم مثلاً اگه مقدار این ستون یک چیز بود یک تصویر نشون بده اگه یک چیزه دیگه بود که تصویره دگه ومهمتر اینکه می خوام یک ستون به جدول اضافه کنم و در اون چکباکس قرار بدم(مثل چکباکس هایی که درInbox میل یاهو داریم )

میشه منو راهنمایی کنید.

من خودم اومدم دیتاگرید رو با تگ table نشون بدم ازم این خطا رو گرفت:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30456: 'DataItem' is not a member of 'System.Web.UI.Control'.

Source Error:


Line 63: </tr>Line 64: <tr>Line 65: <td><%#Container.DataItem("nid")%></td>Line 66: <td><%#Container.DataItem("createdate")%></td>Line 67: <td><%#Container.DataItem("typename")%></td>

Source File: G:\aspDotNet\Source Code for Pages in Book\fordabirkhane\SortDAtaView2.aspx Line: 65

اینم از کد برنامه م:


<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<Script Runat="Server">
Dim dvwProducts As DataView
Sub Page_Load
Dim conNorthwind As SqlConnection
Dim dadProducts As SqlDataAdapter
Dim dstProducts As DataSet
' Create Products DataSet
dstProducts = New DataSet()
conNorthwind = New SqlConnection( "Server=localhost;UID=sa;PWD=sa;Database=dabirkhane" )
dadProducts = New SqlDataAdapter( "Select * From namevorodi", conNorthwind )
dadProducts.Fill( dstProducts, "namevorodi" )
' Create default DataView
dvwProducts = dstProducts.Tables( "namevorodi" ).DefaultView()
' Bind to datagrid
dgrdProducts.DataSource = dstProducts
dgrdProducts.DataBind()
End Sub
Sub dgrdProducts_SortCommand( s As Object, e As DataGridSortCommandEventArgs )
' Sort DataView
dvwProducts.Sort = e.SortExpression
' Rebind to DataGrid
dgrdProducts.DataSource = dvwProducts
dgrdProducts.DataBind()
End Sub
</Script>
<html>
<head><title>SortDataView.aspx</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<form Runat="Server">
<asp:DataGrid
ID="dgrdProducts"
AutoGenerateColumns="false"
AllowSorting="True"
ShowHeader="false"
OnSortCommand="dgrdProducts_SortCommand"
Runat="Server" />
<columns>
<asp:TemplateColumn>
<itemtemplate>
<table border="1" bordercolor="#00CCFF">
<tr>
<td>شماره نامه</td>
<td>تاریخ ایجاد</td>
<td>نوع نامه</td>

</tr>
<tr>
<td><%#Container.DataItem("nid")%></td>
<td><%#Container.DataItem("createdate")%></td>
<td><%#Container.DataItem("typename")%></td>
</tr>
</table>
</itemtemplate>
</asp:TemplateColumn>
</columns>
</asp:DataGrid>
</form>
</body>
</html>

sama01
جمعه 13 مهر 1386, 16:52 عصر
چه نیازی به table هست؟ تمام این کارهایی که گفتید، در خود dataGrid قابل انجامه. فقط کافی خودتون قالبش رو طراحی کنید.
مسلما مثال‌های زیادی در این فروم وجود دارد که اگر با حوصله جستجو کنید به نتیجه خواهید رسید.
ساختن قالب در اکثر کنترل‌های data با هم مشابهه. اگر بکی رو یاد بگیرید، بقیه هم به راحتی قابل انجام خواهند بود.

h.alizadeh
جمعه 13 مهر 1386, 18:57 عصر
خیلی ممنونم
من اصلاً نمی دونستم که اینکارا رو میشه در دیتا گرید انجام داد...

من می خواستم قالب دیتاگرید رو با تگ <table> انجام بدم چون هم کنترل بیشتری روی طراحی داشته باشم و هم براساس مقادیر رکوردهای بانکم شرط بزارم و....
-----

میشه برام لینک تایپیکایی که برا کارم مفیده رو اینجا بزارید؟!http://qsmile.com/qsimages/44.gif
من نمی تونم خوب سرچ کنم!http://qsmile.com/qsimages/26.gif
------
من می خوام اطلاعات یکی از جدولهای بانکم رو در صفحه نشون بدم البته بعضی از ستونهاشو و عناوین ستونها رو هم خودم تعیین کنم - یک ستونم اضافه کنم و توش چکباکس بزارم مثل inbox میل یاهو - بعضی از فیلدهای بانکم رو براساس مقادیرشون بجای مقدارش شکلک بزارم مثلاً اگه توی بانک مقدارش "1" بود یک شکلک وگرنه یک شکلک دیگه - روی یکی از ستونهای جدول لینک بزارم مثلاً با کلیک بر روی مقادیر رکوردهای ستون "موضوع"، "متن پیام" توی یک صفحه ی دیگه باز بشه - دیگه می خوام عناوین ستونهای جدولم لینک دار باشه که با کلیک رو ی هر کدوم براساس اون ستون جدول مرتب بشه - و در آخر هم اینکه می خوام رکوردهام 10تایی 10تایی در صفحه دیده بشه ینی می خوام صفحه بندی بشه با مقدار 10

-----
میشه یه خورده راهنمایی م کنید یعنی فقط دیتا گرید می تونه همه ی اینکارا رو برام بکنه؟؟؟

شرمنده من تازه کارم http://qsmile.com/qsimages/270.gif

ClaimAlireza
شنبه 14 مهر 1386, 09:12 صبح
یعنی فقط دیتا گرید می تونه همه ی اینکارا رو برام بکنه؟؟؟



بله.

شما باید یه gridView بزاری تو صفحت وبرای اون یه itemTemplate ایجاد کنی .

حالا میتونی توی این itemTemplate یه جدول ایجاد کنی و با اون فرمتی که میخای مولفه ها رو بچینی.

در مورد عکس میتونی برای اونایی که میخای عکسش نمایش داده بشه visible رو true کنی که این visible رو هم میتونی از بانکت بخونی.

برای عناوین لینک دار هم تاپیک زیاد وجود داره مثلا تاپیک زیر:

http://barnamenevis.org/forum/showthread.php?t=80772

میتونی در مورد LinkButton هم جستجو کنی مطالب مفید دیگری هم در این رابطه هست.

موفق باشی...

h.alizadeh
یک شنبه 15 مهر 1386, 09:06 صبح
سلام،
تشکر

منظور شما از GridView؛ DataGrid با DataView هست؟؟؟

یه نگاه به این کد من بندازید :


<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<Script Runat="Server">
Dim dvwProducts As DataView
Sub Page_Load
Dim conNorthwind As SqlConnection
Dim dadProducts As SqlDataAdapter
Dim dstProducts As DataSet
' Create Products DataSet
dstProducts = New DataSet()
conNorthwind = New SqlConnection( "Server=localhost;UID=sa;PWD=sa;Database=dabirkhane" )
dadProducts = New SqlDataAdapter( "Select * From namevorodi", conNorthwind )
dadProducts.Fill( dstProducts, "namevorodi" )
' Create default DataView
dvwProducts = dstProducts.Tables( "namevorodi" ).DefaultView()
' Bind to datagrid
dgrdProducts.DataSource = dstProducts
dgrdProducts.DataBind()
End Sub
Sub dgrdProducts_SortCommand( s As Object, e As DataGridSortCommandEventArgs )
' Sort DataView
dvwProducts.Sort = e.SortExpression
' Rebind to DataGrid
dgrdProducts.DataSource = dvwProducts
dgrdProducts.DataBind()
End Sub
</Script>
<html>
<head><title>SortDataView.aspx</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<form Runat="Server">
<table bgcolor="#E6F7F4" border="2" bordercolor="#660099">
<asp:DataGrid
ID="dgrdProducts"
AutoGenerateColumns="false"
AllowSorting="True"
OnSortCommand="dgrdProducts_SortCommand"
Runat="Server" >
<columns>
<asp:TemplateColumn HeaderText="شماره نامه">
<itemtemplate>
<tr><td><%#container.DataItem("nid")%></td>
</itemtemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="موضوع">
<itemtemplate>
<td><%#container.DataItem("matter")%></td>
</itemtemplate>
</asp:TemplateColumn >
<asp:TemplateColumn HeaderText="تاریخ ورود">
<itemtemplate>
<td><%#container.DataItem("enterdate")%></td>
</itemtemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="نوع نامه">
<itemtemplate>
<td><%#container.DataItem("typename")%></td>
</itemtemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="فوریت">
<itemtemplate>
<td><%#container.DataItem("foriyat")%></td></tr>
</itemtemplate>
</asp:TemplateColumn>
</columns>
</asp:DataGrid>
</table>
</form>
</body>
</html>


ببینید، من اول یک دیتا گرید ساده گذاشتم بدون هیچ فرمت دهی خب با دیتا ویو هم امکان مرتبسازی رو گذاشتم بعد که ستونها رو خودم اضافه کردم و AutoGenerateColumns="false" کردم حالا دیگه ستونها بصورت لینک در نمییان برای مرتبسازی!!!!
اما اگه AutoGenerateColumns="true" کنم ستونهایی که خودش خودکار میزاره رو عناوینش رو لینک دار نشون میده و امکان مرتبسازی براساس همه ی ستونهای که خودش گذاشته هست و ستونهایی که منم گذاشتم دیده میشه اما عنوانهاش بدون لینک هست!!!!!!!!!!!

بعد دیگه اینکه آیا تگ های <table> رو جای درستی گذاشتم یانه؟؟؟ کجا بزارم ؟؟
من تا قبل از اینکه تگ <table> رو بزارم ستونهایم که خودم گذاشتم خوب دیده میشد ولی وقتی اینطوری تگ ها ی<table> رو اضافه کردم بصورت نامنظم دیده میشه!!

چکار کنم؟؟؟؟http://qsmile.com/qsimages/297.gif

خواهشاً راهنمایی م کنید....

اگه ممکنه این کدهای منو بردارید و خودتون اجرا کنید ببینید چطوره، حالا جای بانکش خودتون یک بانک دیگه بزارید.http://qsmile.com/qsimages/238.gif

می گم حالا تگها رو خوب استفاده کردم یانه؟ همینجوری استفاده میشه دیگه نه؟http://qsmile.com/qsimages/73.gif
من تازه کارمhttp://qsmile.com/qsimages/52.gifhttp://qsmile.com/qsimages/52.gif