# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > مقالات مرتبط با Microsoft .Net Framework >  داونلود کد: اعمال متداول با DataGrid در ASP.NET

## Behrouz_Rad

در یکی از پروژه هایی که چندی پیش بر روی آن کار می کردم، نیاز به وب فرمی جهت ثبت تقاضاهای مشتریان بود.
در این فرم باید قابلیت ثبت، ویرایش و حذف درجا به کاربر داده میشد.
از آنجا که در این وب فرم، برای ورود و ویرایش اطلاعات از DropDownList و Text Box و برای حذف از CheckBox ها استفاده شده و همچنین حاوی نکات جالبی در مورد نحوه مدیریت رویدادها و چگونگی ارجا به کنترل های درون DataGrid است، خالی از لطف نبود که این فرم به صورت Open Source برای استفاده دوستان قرار بگیره.
*انشاا... کمکی در مورد رفع مشکلات دوستان در کار با DataGrid باشد.*
توجه: جهت سهولت کار دوستان، تغییرات اندکی در پروژه داده شده. (تغییر دیتابیس از SQL Server به Access، حذف مدیریت تعیین هویت کاربر، تبدیل مدیریت پیچیده خطاها به مدیریت آسان و ...)
* پروژه با هر دو زبان VB.NET و C#‎.NET برای دوستان نوشته شده.*
*آماده پاسخگویی به سوالات دوستان در مورد خطوط مختلف این پروژه هستم.*
_لطفا از پرسیدن سوالات کلی خودداری نمایید._

----------


## pegasos

با عرض سلام و خسته نباشید.
خیلی لطف کردید.

فقط یک خواهش بزرگ.

<b>

توجه: جهت سهولت کار دوستان، تغییرات اندکی در پروژه داده شده. (تبدیل از C#‎.NET به VB.NET، تغییر دیتابیس از SQL Server به Access، حذف مدیریت تعیین هویت کاربر، تبدیل مدیریت پیچیده خطاها به مدیریت آسان و ...)

</b>
آب دهانم جاری شد.


اگر لطف کنید و همان نمونه اصلی را هم که خودتان کار کرده اید (‍C#‎ + SQL )  ارائه دهید واقعا ممنون می شویم.

پر رو ئی مرا ببخشید.

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

به امید موفقیت.

----------


## Behrouz_Rad

عزیز جان!
همین کدی رو هم که گذاشتم کلی ریسک کردم.
در متن قرار دادی که با شرکت بسته شده، در صفحه سوم نوشته شده:
*.... همچنین حق انتشار کدهای برنامه تنها در اختیار شرکت درخواست دهنده بوده و نویسنده برنامه حق انتشار کدها را به هیچ وجه نخواهد داشت.*

----------


## tayebeh

دست شما درد نکند . خیلی عالی بوددددددددددددددددددددددد  دددددددد.

----------


## pegasos

با عرض سلام مجدد.

خیلی ممنون آقای راد.
ببخشید که ما یک مقدار راحت طلب شده ایم .

ما هم به هیچ وجه نمی خواهیم شخصیت حرفه ای شما زیر سعال برود.(من اطلاع نداشتم)
 کد ها هم ،بسیار بسیار عالی و کاربردی است.

به امید موفقیت.

----------


## SalarSoft

Amazingly COOL

----------


## Behrouz_Rad

بنا به درخواست تعدادی از دوستان، پروژه رو با زبان C#‎.net هم آماده کردم.
از تاپیک اصلی داونلود کنید.

----------


## AspNet

خسته نباشید

----------


## PrinceDotNet

میشه در مورد کد زیر یک توضیحی بدید.

box = eval("document.Form1.DataGrid1__ctl" + i + "_ChkRemove");
مخصوصا" DataGrid1__ctl یعنی چی.

----------


## Behrouz_Rad

به منظور جلوگیری از تداخل نام کنترل های موجود در DataGrid، این کنترل ها بدین شکل ایجاد می شوند که ابتدا نام DataGrid (که در این پروژه DataGrid1 نام دارد) می آید. سپس دو کاراکتر Underline به همراه کلمه ctl که مخفف عبارت Control است. سپس یک عدد که معرف آی دی کنترل است.
در ادامه یک کاراکتر Underline و در نهایت نام کنترل اصلی که توسط برنامه نویس به کنترل نسبت داده شده.
متغیر box، با یک حلقه For، به تک تک CheckBox های موجود در DataGrid ارجا داده می شود و سپس علامت خوردن یا نخوردن چک باکس را بررسی می کند.

----------


## PrinceDotNet

سپس یک عدد که معرف آی دی کنترل است.

آی دی چی.
کدوم کنترل.

----------


## Behrouz_Rad

آی دی یعنی مشخصه.
هر کنترل دارای یک ID ایه.
مثل تو که یه اسم داری.
این ای دی رو می تونی از طریق مشاهده سورس HTML صفحه ببینی. (در IE از طریق انتخاب گزینه Source از منوی View و در FireFox از طریق انتخاب گزینه Page Source از منوی View)
البته اگر کنترل های دیگه ای به DataGrid اضافه کنی، شماره اختصاص داده شده به کنترل تغییر می کنه.
مقصود از کنترل نیز هر کنترلی است که در DataGrid است وجود دارد و بر اساس تعداد ردیف ها ایجاد می شود.

----------


## PrinceDotNet

نه منضور من این نبود . شما گفتید اول آی دی datagrid رو مینویسی بعد دو کلمه ی دیگه 
((حالا یک عدد که معرف آی دی است .))
اما آی دی دیتا گرید رو که قبلا" نوشتیم پس آی دی چی رو مینویسیم؟

----------


## Behrouz_Rad

DataGrid، به کنترل هایی که درونش قرار می گیرن، یک شماره نسبت میده.
در حقیقت،  DataGrid، پدر اون کنترل هاست.

----------


## PrinceDotNet

فهمیدم ممنون

----------


## PrinceDotNet

میشه از این روش برای کنترل های دیگه هم مثل یک check box در صفحه استفاده کرد.

یعنی اگر id اون chk1 باشه میشه
chk1_ctl

----------


## PrinceDotNet

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

----------


## Behrouz_Rad

اون روش مختص کنترل های Container هست.
یعنی کنترل هایی که در برگیرنده کنترل های دیگه هستند. مثل Repeater، DataList، DataGrid و ...
تابع CType برای تبدیل نوع سفارشی به کار میره.
مثلا تابع CInt در VB.NET، برای تبدیل یک نوع داده به Integer استفاده میشه.
در این برنامه، از دستور CType برای تبدیل ارجا به دست آمده به کنترل به نوع آن کنترل استفاده میشه.
البته در VB.NET این عمل نیاز چندانی نداره و تنها برای ساخت یافتگی و رعایت اصول صحیح برنامه نویسی NET. استفاده میشه اما در C#‎.NET این تبدیل نوع حتما باید صورت بگیره و به طور *صریح* قادر به ارجا به یک شی نیستید.
موفق باشید.

----------


## kochol

سلام آقا بهروز
من از روی کد شما یک کد دیگر ساختم من در یک ریپیتر یک چک باکس گذاشتم و شما که برای شناسایی آی دی از یک لیبل مخفی استفاده می کردید من این ای دی را به تول تیپ این کنترل نسبت دادم ولی وقتی می خواهم استفاده کنم از کد این خطا را می گیره من که نتونستم ایراد ان را بفهم لطفا شما کمکم کنید

			<TABLE dir="ltr" id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="1" bordercolor="red"
				style="FONT-SIZE: 11pt; FONT-FAMILY: tahoma">
				<tr bgcolor="orange" align="center">
					<td>نوع محصول</td>
					<td>نام محصول</td>
					<td>اندازه</td>
					<td>امتیاز</td>
					<td>تاریخ اضافه شدن</td>
					<td>خرید</td>
				</tr>
				<asp:Repeater ID="rePro" Runat="server">
					<ItemTemplate>
						<tr bgcolor="DeepSkyBlue" align="center">
							<td><%# DataBinder.Eval(Container,"DataItem.type") %></td>
							<td align="left"><%# DataBinder.Eval(Container,"DataItem.name") %></td>
							<td nowrap="true"><%# DataBinder.Eval(Container,"DataItem.size") %>
								KB</td>
							<td><%# DataBinder.Eval(Container,"DataItem.voteid") %></td>
							<td><%# DataBinder.Eval(Container,"DataItem.datecreated") %></td>
							<td>
								<asp:CheckBox ID="chkAdd" Runat="server" tooltip='<%# DataBinder.Eval(Container,"DataItem.proid") %>'>
								</asp:CheckBox></td>
						</tr>
					</ItemTemplate>
				</asp:Repeater>


و در قسمت کد بیهایند هم نوشتم

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim chkRemove As WebControls.CheckBox
        Dim strIDs As String = ""
        Dim boolCheck As Boolean = False

        For Each d As RepeaterItem In rePro.Items
            chkRemove = CType(rePro.FindControl("chkAdd"), WebControls.CheckBox)
            If chkRemove.Checked Then
                boolCheck = True
                strIDs += chkRemove.ToolTip() & ","
            End If
        Next

ولی خطای زیر را می گیره لطفا مرا راهنمایی کنید
Object reference not set to an instance of an object

----------


## kochol

سلام
متاسفانه کد html منو تبدیل می کنه شما برای دیدن کد من روی دکمه qoute کلیک کنید
راستی واقعا برنامه جالبی نوشتید ممنون

----------


## PrinceDotNet

میشه بگید چرا بعضی وقتها پرو÷ه های شما یا دیگر سایتها رو وقتی تو vs میخوام اجرا کنم پیغام ختای زیر رو میده.
visual studio .net can not creat application.the likeliest problem is that requeir commponentsare not installedon the local web server.Run visual studio .netsetup and add the web development component

----------


## PrinceDotNet

اگر بخواهیم این نوع پیغام دادن با java رو روی کنترلهای معمولی یعنی اینکه تو کنترل دیگه ای نباشه رو انجام داد باید چکار کرد؟

----------


## Behrouz_Rad

_جناب kochol، زمانی که قصد نوشتن کدهای HTML رو در ادیتور دارید، فعلا از کاراکتر T به جای علامت بزرگتر-کوچکتر استفاده کنید تا مشکل ادیتور برطرف بشه._
شما گفتید که ID رو به خاصیت ToolTip کنترل Label نسبت دادید، اما در کدی که گذاشتید، این ID رو از خاصیت ToolTip کنترل CheckBox می خونید!

کاربر PrinceDotNet، خطایی که گرفته میشه بدین دلیل هست که پروژه بنده در مسیری ایجاد شده که به منظور اجرای صحیح بر روی سیستم شما نیز باید در آن مسیر کپی شود.
راه دیگه هم اینه که دو فایل webproj و sln پروژه رو در Notepad باز کنید و خطوطی که مربوط به مسیر ایجاد پروژه بر روی سیستم بنده هست رو با تنظیمات IIS خود Map کنید.
_به منظور سهولت کار، پروژه رو در Inetpub/wwwroot کپی و HomeDirectory را در IIS به همین مسیر تنظیم کنید._
و اما...
تفاوتی نمیکنه...
به منظور الصاق یک تابع جاوا به یک کنترل، از دستوری شبیه به دستور زیر استفاده کنید:

myControl.Attributes.Add("onclick","myFunction()")

اولین آرگومان، نام روال و دومین آرگومان، نام تابع جاوا اسکریپت را مشخص می کند.
موفق باشید.

----------


## PrinceDotNet

خیلی خیلی ممنون

----------


## kochol

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

			Tasp:Repeater ID="rePro" Runat="server"T
				THeaderTemplateT
					TTABLE dir="ltr" id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="1" bordercolor="red"
						style="FONT-SIZE: 11pt; FONT-FAMILY: tahoma"T
						Ttr bgcolor="orange" align="center"T
							TtdTنوع محصولT/tdT
							TtdTنام محصولT/tdT
							TtdTاندازهT/tdT
							TtdTامتیازT/tdT
							TtdTتاریخ اضافه شدنT/tdT
							TtdTخریدT/tdT
						T/trT
				T/HeaderTemplateT
				TItemTemplateT
					Ttr bgcolor="WhiteSmoke" align="center"T
						TtdTT%# DataBinder.Eval(Container,"DataItem.type") %TT/tdT
						Ttd align="left"TT%# DataBinder.Eval(Container,"DataItem.name") %TT/tdT
						Ttd nowrapTT%# DataBinder.Eval(Container,"DataItem.size") %T
							KBT/tdT
						TtdTT%# DataBinder.Eval(Container,"DataItem.voteid") %TT/tdT
						TtdTT%# DataBinder.Eval(Container,"DataItem.datecreated") %TT/tdT
						Ttd bgcolor="Lavender"T
							Tasp:CheckBox ID="chkAdd" Runat="server" tooltip='T%# DataBinder.Eval(Container,"DataItem.proid") %T'T
							T/asp:CheckBoxTT/tdT
					T/trT
				T/ItemTemplateT
			T/asp:RepeaterT


اینهم کد سمت سرور

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim chkRemove As WebControls.CheckBox
        Dim strIDs As String = ""
        Dim boolCheck As Boolean = False

        For Each d As RepeaterItem In rePro.Items
            chkRemove = CType(rePro.FindControl("chkAdd"), WebControls.CheckBox)
            If chkRemove.Checked Then
                boolCheck = True
                strIDs += chkRemove.ToolTip() & ","
            End If
        Next
        Response.Write(strIDs)
End Sub

----------


## PrinceDotNet

میشه در مورد sub روتین DataGrid1_ItemDataBound توضیح بدید.

یعنی چه موقع اتفاق می افتد؟

----------


## زهرا قاسمی

فونت های فارسی بعضی هاش تغییر کرده و یه سری کاراکتر نامفهوم شده!ولی بعضی هاش درسته!برای اینکه عنوان  ستون های فرم رو فارسی ببینیم باید چی کار کنیم؟

----------


## Behrouz_Rad

کاربر PrinceDotNet!
روال ItemDataBound پس از ایجاد یک ردیف از DataGrid اتفاق می افتد و تفاوت آن با روال ItemCreated در این است که روال ItemDataBound شامل اطلاعات دیتابیس است اما روال ItemCreated شامل هیچ اطلاعاتی از داده های موجود در دیتابیس نیست.

خانم زهرا قاسمی!
احتمالا مشکل از ویندوز شماست!
تمامی وب فرم ها به صورت Unicode ذخیره شده اند و بدون هیچ مشکلی در نمایش حروف فارسی عمل می کنند.

موفق باشید.

----------


## mahboobeh

اول خیلی تشکر میکنم ازتون به خاطر پرو÷ه .

بعد می خواستم بپرسم که من از بعضی قسمتها استفاده کردم اما در قسمت SCRIPT از BOX.CHECKED خطا می گیره میگه تعریف نشده است به نظرتون چرا؟

----------


## mahboobeh

یه اشکال دیگه هم که داشتم این بود:
strChildPiece = ((DataBoundLiteralControl) e.Item.Cells[2].Controls[0]).Text

DataBoundLiteralControl برای چی استفاده شده موقع اجرا روی edit که می زنم ازش خطا می گیره.

----------


## mahboobeh

ببخشید این اخریشه دیگه امیدوارم 3 تاشو جواب بدید

من
( public void doInsert(object sender, DataGridCommandEventArgs e		
                                                                                  }
                                                                                  {
رو از برنامه شما کپی کردم اما موقع اجرا بعد از زدن دکمه اضافه واردش نمیشه میشه بگید از کجا باید بیارمش؟
توی رخدادهای دیتا گرید که doinsert نداریم .
ببخشید که من زیادی سئوال کردم اگه اینا رو لطف کنید جواب بدید دیگه تکرار نمیشه.

----------


## mahboobeh

جواب این سوالها رو پیدا کردم اولی که چیزی نبو د دومی هم باید از label استفاده می کردم سومی هم باید به جای doinsert از  item commandاستفاده می کردم 



اما... حالا یه مشکل جدید پیش اومده وقتی ازallow paging برای صفحه صفحه کردن استفاده می کنم بعد وقتی  می خوام رکوردی رو حذف کنم script رویbox cheked خطا می گیره 
میدونید چیکار باید بکنم؟امیدوارم این یکی رو دیگه جواب بدید.

----------


## roya2002_80

با سلام .
کدی که گذاشته اید خیلی خیلی عالی است و من کلی لستفاده کردم.. دستتان درد نکند.
من یک سوالی دارم اینکه وقتی datagrid را صفحه بندی می کنم دکمه حذف کار نمی کند لطفا به من بگویید که چه کار کنم.
با تشکر

----------


## Behrouz_Rad

تابع جاوا اسکریپت confirmDelete موجود در فایل aspx را به شکل زیر تغییر دهید:

function confirmDelete()
{
var j= <%= DataGrid1.Items.Count %>
var xCounter = 0;
for (i=3; i < j+3; i++)
{
   box = eval("document.Form1.DataGrid1__ctl" + i + "_ChkRemove");
   if (box.checked == true)
   ++xCounter;
}
if (xCounter == 0)
{
   alert("!هیچ رکوردی انتخاب نشده است");
   return false;
}
else 
   return confirm("آیا مطمئن به حذف " +xCounter+ " رکورد انتخابی هستید؟")
}

----------


## roya2002_80

باسلام
من کدی را که گفته بودید را گذاشتم و کد جاوا اسکریپت دکمه حذف کار می کند ولی سراغ item_command نمی رود ؟ حال برای حل مشکل چکار باید کرد؟
با تشکر

----------


## roya2002_80

آقای راد لطفا جواب بدهید؟

----------


## Behrouz_Rad

شما چقدر عجولید خانم!
به آخرین پست خود در این تاپیک 9 روز بعد برای گرفتن جواب سر می زنید اما طاقت تحمل یک روز برای رسیدن به جواب رو ندارید؟

جواب سوالتون رو نمی دونم...

----------


## naserikarimi

میشه خواهش کنم ورژن دیتابیس SQL رو هم بذارید واسه دانلود

----------


## reza_reza_shirazi

لطفا به من کمک کنید : 

1- چطوری میتوانم رویداد SELECTED INDEX CHANGE  مربوط به DATAGRID  را در سمت CLIENT یعنی بدون این که صفحه POSTBACK بشود انجام دهم و مقدار فیلد کلیدی آن ردیف را دریافت کنم ؟

----------


## hamed_bostan

اقا بهروز سلام من اون روز تاحالا تازه دیشب این فایل شما رو باز کردم و دیدم . دستت درد نکنه بابا سنگ تموم گداشتی خودمونیم ها .
یا حق

----------


## iekrang

با سلام.
ممنون از این کد واقعاً کاملی که گذاشتید.
در صورت امکان در مورد این قسمت از برنامتون یکم توضیح بدید.ممنون.

protectedvoid DropDown_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList xList = (DropDownList) sender;
string strChildPieceSQL = "SELECT * FROM tblChildPiece WHERE intID=" + Convert.ToInt32(xList.SelectedValue.ToString());
TableCell Cell = (TableCell) xList.Parent;
DataGridItem Item = (DataGridItem) Cell.Parent;
DropDownList ModelList = (DropDownList) Item.Cells[2].Controls[1];
OleDbConnection Cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;  Data Source=" + Server.MapPath(".\\Data\\myDB.mdb"));
OleDbDataAdapter Da;
DataSet Ds;
Da = new OleDbDataAdapter(strChildPieceSQL, Cnn);
Ds = new DataSet();
Da.Fill(Ds, "tblChildPiece");
ModelList.DataSource = Ds.Tables[0].DefaultView;
ModelList.DataTextField = "strSubPieceName";
ModelList.DataValueField = "strSubPieceName";
ModelList.DataBind();
ListItem xChildItem = ModelList.Items.FindByText(strChildPiece.Trim());
if (xChildItem != null) xChildItem.Selected = true;
}

----------


## par_parvaz

:متفکر:  سلام
چطور می توان اطلاعات مربوط به چندین کالا را در یک فرم وارد کنم به گونه ای که پس از وارد کردن اطلاعات در سطر اول با فشردن دکمه enter سطر جدیدی ایجاد شود تا اطلاعات مربوط به کالای بعدی را وارد کنیم. (فرم به صورت جدول باشد)
با تشکر.

----------


## rasti_web

لطفا در مورد شمارنده حلقه در این تابع توضیح دهید . 
()function select_deselectAll

----------


## محسن بابائی

آقای راد دستتون درد نکنه . همه چی داره به جز یه Search که اگر بزارید تکمیل میشه

----------


## rasti_web

دیتا گرید این فایل دارای Paging نیست اگر DataGrid دارای Paging  باشد دکمه انتخاب همه خطای جاوا میدهد .  چطور میتوان مشکل را حل کرد؟

----------


## mp2009

سلام به تمامی کاربران محترم سایت
یه مشکل کوچولو دارم ببینم کسی میتونه کمک کنه

من یه دونه گرید ویو دارم که یکی از سطونهاش چک باکس هست
میخواهم کاربر هر سطی رو که تیک زد حذف کنه


این کد من هست


CheckBox chkRemove=newCheckBox();
DataBoundLiteralControl DBLC;
string strIDs= "";
bool boolCheck= false;
foreach (GridViewRow gvRow in GridView_NewsList.Rows)
{
chkRemove = (CheckBox)GridView_NewsList.FindControl("ChkRemove");
if (chkRemove.Checked == true)
{
boolCheck = true;
 
DBLC = (DataBoundLiteralControl)GridView_NewsList.FindControl("ItemNumRemove").Controls[0];
strIDs += DBLC.Text + ",";
 
}
}
if (boolCheck == true)
{
 
string strSQL = "Delete * From news Where Id IN ('" + strIDs.Substring(0, strIDs.LastIndexOf(",")) + "')";
SqlConnection con = newSqlConnection(st);
SqlCommand cmd = newSqlCommand(strSQL,con);
 
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (SqlException ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
 
}
}
 

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

 
<asp:GridViewID="GridView_NewsList"runat="server"AutoGenerateColumns="False"DataKeyNames="Id"
DataSourceID="SqlDataSource1"Font-Names="Tahoma"Font-Size="9pt"Font-Strikeout="False"
Width="732px"OnSelectedIndexChanged="GridView_NewsList_SelectedIndexChanged"OnRowDataBound="GridView_NewsList_RowDataBound"EmptyDataText="چیزی برای نمایش وجود ندارد"AllowPaging="True"OnRowDeleting="GridView_NewsList_RowDeleting"ShowFooter="True">
<FooterStyleBackColor="Wheat"/>
<EmptyDataRowStyleBackColor="SteelBlue"Wrap="True"/>
<Columns>
<asp:TemplateField>
<FooterTemplate>
<asp:ButtonID="btnRemove"runat="server"BackColor="#FFC080"BorderStyle="Solid"
BorderWidth="1px"CommandName="delete"Font-Names="Tahoma"Font-Size="11px"Height="22px"
Text="حذف"Width="64px"/>
</FooterTemplate>
<ItemTemplate>
<asp:CheckBoxID="ChkRemove"runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandFieldButtonType="Button"DeleteText="حذف خبر"SelectText="ویرایش"ShowSelectButton="True"UpdateText="save">
<ItemStyleBorderWidth="1px"/>
<ControlStyleBackColor="Gainsboro"BorderColor="#404040"BorderWidth="1px"/>
</asp:CommandField>
<asp:BoundFieldDataField="Username"HeaderText="نویسنده"SortExpression="Username"/>
<asp:BoundFieldDataField="Time"HeaderText="ساعت درج"SortExpression="Time">
<ItemStyleWidth="100px"/>
</asp:BoundField>
<asp:BoundFieldDataField="Date"HeaderText="تاریخ"SortExpression="Date"/>
<asp:TemplateFieldFooterText="خلاصه خبر"HeaderText="خلاصه خبر"SortExpression="Body">
<ItemStyleWidth="150px"/>
<ItemTemplate>
&nbsp;<asp:PanelID="Panel2"runat="server"Height="50px"ScrollBars="Vertical"Width="221px">
<asp:LabelID="Label1"runat="server"Text='<%# Eval("Body") %>'></asp:Label></asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldFooterText="عنوان"HeaderText="عنوان">
<ItemStyleWidth="130px"/>
<ItemTemplate>
&nbsp;&nbsp;
<asp:LabelID="Label5"runat="server"Text='<%# Eval("Title") %>'></asp:Label>&nbsp;
</ItemTemplate>
<AlternatingItemTemplate>
&nbsp;
</AlternatingItemTemplate>
</asp:TemplateField>
<asp:BoundFieldDataField="Id"HeaderText="کد خبر"InsertVisible="False"ReadOnly="True"
SortExpression="Id">
<ItemStyleWidth="35px"/>
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:LabelID="ItemNumRemove"runat="server"Visible="False"Text='<%# Eval("Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyleBackColor="InactiveCaptionText"/>
<EditRowStyleBackColor="CornflowerBlue"/>
<SelectedRowStyleBackColor="PeachPuff"/>
<HeaderStyleBackColor="Wheat"Font-Names="Arial"Font-Size="Medium"ForeColor="#400000"/>
</asp:GridView>


وقتی اجرا میکنم این ارور رو میده




> *Index was out of range. Must be non-negative and less than the size of the collection.*
> *Parameter name: index*

----------


## mehdi_sql2008

> با عرض سلام و خسته نباشید.
> خیلی لطف کردید.
> 
> فقط یک خواهش بزرگ.
> 
> <b>
> 
> توجه: جهت سهولت کار دوستان، تغییرات اندکی در پروژه داده شده. (تبدیل از C#‎.NET به VB.NET، تغییر دیتابیس از SQL Server به Access، حذف مدیریت تعیین هویت کاربر، تبدیل مدیریت پیچیده خطاها به مدیریت آسان و ...)
> 
> ...


سلام
من منبع خوبی راجب sql sever 2000   البته حرفه ای می خوام

----------


## razi-kariman

سلام 
ممنون بابت لینک
خیلی عالی بود 
ولی میشه یک مثال هم از Radio Button ها بذارید
واقعا ممنون

----------

