h.alizadeh
شنبه 21 مهر 1386, 14:59 عصر
سلام،
من برای ویرایش رکوردهای جدولم ستونی از نوع EditCommandColumn به DataGrid م اضافه کردم...
من امکان ویرایش را برای یک فیلدم میخوام اما نمی خوام کاربر بتونه در هنگام ویرایش رکورد، مقدار تکراری در فیلد قرار بده
چطوری می تونم این شرط رو بزارم که اگه این مقدار جدیدی که کاربر در فیلد وارد کرده اگر تکراری نبود ویرایش شود وگرنه پیام دهد که این مقدار قبلا وجود دارد؟؟؟؟؟؟؟
اینم کد کامل برنامه م:
<%@ Import Namespace="System.Data.SqlClient" %>
<Script Runat="Server">
Dim conNorthwind As SqlConnection
Dim cmdSql As SqlCommand
Dim strSql As String
Sub Page_Load
conNorthwind = New SqlConnection( "Server=localhost;UID=sa;PWD=sa;Database=dabirkhoon e" )
If Not IsPostBack Then
BindDataGrid
End If
End Sub
Sub BindDataGrid
cmdSql = New SqlCommand( "Select * From sections", conNorthwind )
conNorthwind.Open()
dgrdProducts.DataSource = cmdSql.ExecuteReader()
dgrdProducts.DataBind()
conNorthwind.Close()
End Sub
Sub dgrdProducts_EditCommand( s As Object, e As DataGridCommandEventArgs )
dgrdProducts.EditItemIndex = e.Item.ItemIndex
BindDataGrid
End Sub
Sub dgrdProducts_UpdateCommand( s As Object, e As DataGridCommandEventArgs )
Dim id As Integer
Dim txtnamesection As TextBox
Dim strnewname As String
id = dgrdProducts.DataKeys( e.Item.ItemIndex )
txtnamesection = e.Item.Cells( 1 ).Controls( 0 )
strnewname = txtnamesection.Text
strSql = "Update sections Set namesection=@newname Where sid=@id"
cmdSql = New SqlCommand( strSql, conNorthwind )
cmdSql.Parameters.Add( "@newname", strnewname )
cmdSql.Parameters.Add( "@id", id )
conNorthwind.Open()
cmdSql.ExecuteNonQuery()
conNorthwind.Close()
dgrdProducts.EditItemIndex = -1
BindDataGrid
End Sub
Sub dgrdProducts_CancelCommand( s As Object, e As DataGridCommandEventArgs )
dgrdProducts.EditItemIndex = -1
BindDataGrid
End Sub
</Script>
<html>
<head><title>DataGridEditProducts.aspx</title></head>
<body dir="rtl">
<font color="#6600FF">
<form Runat="Server">
<asp:DataGrid
ID="dgrdProducts"
OnEditCommand="dgrdProducts_EditCommand"
OnUpdateCommand="dgrdProducts_UpdateCommand"
OnCancelCommand="dgrdProducts_CancelCommand"
DataKeyField="sid"
AutoGenerateColumns="False"
BackColor="#ccccff"
BorderColor="black"
CellPadding=15
CellSpacing="0"
Font-Name="Tahoma"
Font-Size="10pt"
HeaderStyle-BackColor="#aaaadd"
Runat="Server">
<Columns>
<asp:BoundColumn
HeaderText="شماره بخش" Visible="false"
DataField="sid"
ReadOnly="True" />
<asp:BoundColumn
HeaderText="نام بخش ها"
HeaderStyle-HorizontalAlign="center" HeaderStyle-Font-Bold="true"
HeaderStyle-Font-Size="12pt" HeaderStyle-Height="30"
HeaderStyle-Width="300"
DataField="namesection" />
<asp:EditCommandColumn
headerimageurl="F:\Yahoo!\Messenger\Media\Smileys\75.gif"
HeaderStyle-Width="60"
EditText="Edit!"
UpdateText="Update!"
CancelText="Cancel!" />
</Columns>
</asp:DataGrid>
</form>
<br><br><a href="showsections.aspx" style="background-color:#E8F4F1" target="_blank">نمایش بخش ها</a>
</body>
</html>
نمی خوام نام بخش(namesection) تکراری بشه
خیلیم دوست دارم از این روش استفاده کنم
خواهش می کنم راهنمایی م کنید.http://qsmile.com/qsimages/37.gif
من برای ویرایش رکوردهای جدولم ستونی از نوع EditCommandColumn به DataGrid م اضافه کردم...
من امکان ویرایش را برای یک فیلدم میخوام اما نمی خوام کاربر بتونه در هنگام ویرایش رکورد، مقدار تکراری در فیلد قرار بده
چطوری می تونم این شرط رو بزارم که اگه این مقدار جدیدی که کاربر در فیلد وارد کرده اگر تکراری نبود ویرایش شود وگرنه پیام دهد که این مقدار قبلا وجود دارد؟؟؟؟؟؟؟
اینم کد کامل برنامه م:
<%@ Import Namespace="System.Data.SqlClient" %>
<Script Runat="Server">
Dim conNorthwind As SqlConnection
Dim cmdSql As SqlCommand
Dim strSql As String
Sub Page_Load
conNorthwind = New SqlConnection( "Server=localhost;UID=sa;PWD=sa;Database=dabirkhoon e" )
If Not IsPostBack Then
BindDataGrid
End If
End Sub
Sub BindDataGrid
cmdSql = New SqlCommand( "Select * From sections", conNorthwind )
conNorthwind.Open()
dgrdProducts.DataSource = cmdSql.ExecuteReader()
dgrdProducts.DataBind()
conNorthwind.Close()
End Sub
Sub dgrdProducts_EditCommand( s As Object, e As DataGridCommandEventArgs )
dgrdProducts.EditItemIndex = e.Item.ItemIndex
BindDataGrid
End Sub
Sub dgrdProducts_UpdateCommand( s As Object, e As DataGridCommandEventArgs )
Dim id As Integer
Dim txtnamesection As TextBox
Dim strnewname As String
id = dgrdProducts.DataKeys( e.Item.ItemIndex )
txtnamesection = e.Item.Cells( 1 ).Controls( 0 )
strnewname = txtnamesection.Text
strSql = "Update sections Set namesection=@newname Where sid=@id"
cmdSql = New SqlCommand( strSql, conNorthwind )
cmdSql.Parameters.Add( "@newname", strnewname )
cmdSql.Parameters.Add( "@id", id )
conNorthwind.Open()
cmdSql.ExecuteNonQuery()
conNorthwind.Close()
dgrdProducts.EditItemIndex = -1
BindDataGrid
End Sub
Sub dgrdProducts_CancelCommand( s As Object, e As DataGridCommandEventArgs )
dgrdProducts.EditItemIndex = -1
BindDataGrid
End Sub
</Script>
<html>
<head><title>DataGridEditProducts.aspx</title></head>
<body dir="rtl">
<font color="#6600FF">
<form Runat="Server">
<asp:DataGrid
ID="dgrdProducts"
OnEditCommand="dgrdProducts_EditCommand"
OnUpdateCommand="dgrdProducts_UpdateCommand"
OnCancelCommand="dgrdProducts_CancelCommand"
DataKeyField="sid"
AutoGenerateColumns="False"
BackColor="#ccccff"
BorderColor="black"
CellPadding=15
CellSpacing="0"
Font-Name="Tahoma"
Font-Size="10pt"
HeaderStyle-BackColor="#aaaadd"
Runat="Server">
<Columns>
<asp:BoundColumn
HeaderText="شماره بخش" Visible="false"
DataField="sid"
ReadOnly="True" />
<asp:BoundColumn
HeaderText="نام بخش ها"
HeaderStyle-HorizontalAlign="center" HeaderStyle-Font-Bold="true"
HeaderStyle-Font-Size="12pt" HeaderStyle-Height="30"
HeaderStyle-Width="300"
DataField="namesection" />
<asp:EditCommandColumn
headerimageurl="F:\Yahoo!\Messenger\Media\Smileys\75.gif"
HeaderStyle-Width="60"
EditText="Edit!"
UpdateText="Update!"
CancelText="Cancel!" />
</Columns>
</asp:DataGrid>
</form>
<br><br><a href="showsections.aspx" style="background-color:#E8F4F1" target="_blank">نمایش بخش ها</a>
</body>
</html>
نمی خوام نام بخش(namesection) تکراری بشه
خیلیم دوست دارم از این روش استفاده کنم
خواهش می کنم راهنمایی م کنید.http://qsmile.com/qsimages/37.gif