yekta64
دوشنبه 27 مهر 1388, 14:44 عصر
سلام دوستان
من یه گریدویو توی صفحه دارم که دو قابلین داره یکی حذف و یکی انتقال اطلاعات هستش
کد html من برای ایجاد ان گریدویو به صورت زیر هستش
<asp:GridView ID="GridView1" runat="server" style=" font-family:Tahoma"
AutoGenerateColumns="False" DataKeyNames="StdID" ShowFooter="true"
AllowPaging="true" Width="100%" Visible="False">
<FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
<HeaderStyle BackColor="#999999" ForeColor="Black" Font-Size="Small" />
<Columns>
<asp:TemplateField HeaderText="ک§ ©ىگی©ی" >
<ItemTemplate>
<%#Eval("StdID")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ëںê ">
<ItemTemplate>
<%#Eval("FName")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ëںê ¦ںëيں§گی ">
<ItemTemplate>
<%#Eval("LName")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="¢ں©ی¦ ¢يé§">
<ItemTemplate>
<%#Eval("BirthDate")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ک§ êéی" >
<ItemTemplate>
<%#Eval("NationalCode")%>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" Text="يی©ںی¬" />
<asp:TemplateField HeaderText="¥¨ه" ItemStyle-BackColor="#CCCCCC" ItemStyle-HorizontalAlign="Center"
FooterStyle-BackColor="#C6C3C6" FooterStyle-HorizontalAlign="Center" HeaderStyle-BackColor="#999999"
HeaderStyle-HorizontalAlign="Center">
<FooterTemplate>
<asp:Button CommandName="Delete" Text="¥¨ه" ID="btnRemove" runat="server" BorderStyle="Solid"
BorderWidth="1px" BackColor="#CCCCCC" Font-Names="Tahoma" Font-Size="11px" />
</FooterTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkRemove" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
توی این کد من از buttonfiled استفاده کردم و یه دکمه به اسم ویرایش به گرید ویو اضافه کردم که این دکمه باید کلید اصلی رو از این گریدویو بخونه و به صفحه بعد منتقل کنه
خوب برای حذف و این عمل انتقال من کد زیر رو نوشتم:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If IsPostBack = False Then
bind()
End If
End Sub
Sub bind()
Dim con As New SqlConnection()
con.ConnectionString = "Data Source=(local);Initial Catalog=School;Integrated Security=True"
Dim da As New SqlDataAdapter
Dim ds As New DataSet
con.Open()
Dim strsql As String
strsql = "SELECT * FROM FinalStudent"
da = New SqlDataAdapter(strsql, con)
da.Fill(ds, "FinalStudent")
GridView1.DataSource = ds
GridView1.DataBind()
con.Close()
End Sub
Sub deletrow(ByVal s As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Dim chkRemove As WebControls.CheckBox
Dim strIDs As String = ""
Dim boolCheck As Boolean = False
For Each gvRow As GridViewRow In GridView1.Rows
chkRemove = CType(gvRow.FindControl("ChkRemove"), WebControls.CheckBox)
If chkRemove.Checked Then
boolCheck = True
strIDs += GridView1.DataKeys(gvRow.RowIndex).Value & ","
End If
Next
If boolCheck = True Then
con.ConnectionString = "Data Source=(local);Initial Catalog=test;Integrated Security=True"
cmd.Connection = con
con.Open()
Dim strsql As String = "Delete From Contect Where id IN (" & strIDs.Substring(0, strIDs.LastIndexOf(",")) & ")"
cmd.CommandText = strsql
cmd.ExecuteNonQuery()
con.Close()
bind()
End If
End Sub
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
Dim SCHcontext As HttpContext = HttpContext.Current
SCHcontext.Items.Add("txtMaster", GridView1.DataKeys(Integer.Parse(e.CommandArgument .ToString())).Value.ToString())
Server.Transfer("default.aspx", True)
End Sub
توی این کد عمل حذف و انتقال باید انجام بشه
عمل انتقال کاملا درسته اما مشکل اینه که وقتی من روی دکمه حذف کیلیک می کنم به کد:
GridView1.DataKeys(Integer.Parse(e.CommandArgument .ToString())).Value.ToString()
خطای زیر رو میگیره:
Input string was not in a correct format.
خوب من نمیدونم مشکل چی اگه کسی میدونه ممنون میشم راهنمایی کنه
از طرفی اگه کسی می تونه یه راهی پیشنهاد بده که من بتونم توی گریدویو یه دکمه بذارم که انتقال کلید اصلی رو به یه صفحه دیگه انجام بده و همینطور عمل حذف رو ممنون میشم
من یه گریدویو توی صفحه دارم که دو قابلین داره یکی حذف و یکی انتقال اطلاعات هستش
کد html من برای ایجاد ان گریدویو به صورت زیر هستش
<asp:GridView ID="GridView1" runat="server" style=" font-family:Tahoma"
AutoGenerateColumns="False" DataKeyNames="StdID" ShowFooter="true"
AllowPaging="true" Width="100%" Visible="False">
<FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
<HeaderStyle BackColor="#999999" ForeColor="Black" Font-Size="Small" />
<Columns>
<asp:TemplateField HeaderText="ک§ ©ىگی©ی" >
<ItemTemplate>
<%#Eval("StdID")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ëںê ">
<ItemTemplate>
<%#Eval("FName")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ëںê ¦ںëيں§گی ">
<ItemTemplate>
<%#Eval("LName")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="¢ں©ی¦ ¢يé§">
<ItemTemplate>
<%#Eval("BirthDate")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ک§ êéی" >
<ItemTemplate>
<%#Eval("NationalCode")%>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" Text="يی©ںی¬" />
<asp:TemplateField HeaderText="¥¨ه" ItemStyle-BackColor="#CCCCCC" ItemStyle-HorizontalAlign="Center"
FooterStyle-BackColor="#C6C3C6" FooterStyle-HorizontalAlign="Center" HeaderStyle-BackColor="#999999"
HeaderStyle-HorizontalAlign="Center">
<FooterTemplate>
<asp:Button CommandName="Delete" Text="¥¨ه" ID="btnRemove" runat="server" BorderStyle="Solid"
BorderWidth="1px" BackColor="#CCCCCC" Font-Names="Tahoma" Font-Size="11px" />
</FooterTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkRemove" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
توی این کد من از buttonfiled استفاده کردم و یه دکمه به اسم ویرایش به گرید ویو اضافه کردم که این دکمه باید کلید اصلی رو از این گریدویو بخونه و به صفحه بعد منتقل کنه
خوب برای حذف و این عمل انتقال من کد زیر رو نوشتم:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If IsPostBack = False Then
bind()
End If
End Sub
Sub bind()
Dim con As New SqlConnection()
con.ConnectionString = "Data Source=(local);Initial Catalog=School;Integrated Security=True"
Dim da As New SqlDataAdapter
Dim ds As New DataSet
con.Open()
Dim strsql As String
strsql = "SELECT * FROM FinalStudent"
da = New SqlDataAdapter(strsql, con)
da.Fill(ds, "FinalStudent")
GridView1.DataSource = ds
GridView1.DataBind()
con.Close()
End Sub
Sub deletrow(ByVal s As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Dim chkRemove As WebControls.CheckBox
Dim strIDs As String = ""
Dim boolCheck As Boolean = False
For Each gvRow As GridViewRow In GridView1.Rows
chkRemove = CType(gvRow.FindControl("ChkRemove"), WebControls.CheckBox)
If chkRemove.Checked Then
boolCheck = True
strIDs += GridView1.DataKeys(gvRow.RowIndex).Value & ","
End If
Next
If boolCheck = True Then
con.ConnectionString = "Data Source=(local);Initial Catalog=test;Integrated Security=True"
cmd.Connection = con
con.Open()
Dim strsql As String = "Delete From Contect Where id IN (" & strIDs.Substring(0, strIDs.LastIndexOf(",")) & ")"
cmd.CommandText = strsql
cmd.ExecuteNonQuery()
con.Close()
bind()
End If
End Sub
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
Dim SCHcontext As HttpContext = HttpContext.Current
SCHcontext.Items.Add("txtMaster", GridView1.DataKeys(Integer.Parse(e.CommandArgument .ToString())).Value.ToString())
Server.Transfer("default.aspx", True)
End Sub
توی این کد عمل حذف و انتقال باید انجام بشه
عمل انتقال کاملا درسته اما مشکل اینه که وقتی من روی دکمه حذف کیلیک می کنم به کد:
GridView1.DataKeys(Integer.Parse(e.CommandArgument .ToString())).Value.ToString()
خطای زیر رو میگیره:
Input string was not in a correct format.
خوب من نمیدونم مشکل چی اگه کسی میدونه ممنون میشم راهنمایی کنه
از طرفی اگه کسی می تونه یه راهی پیشنهاد بده که من بتونم توی گریدویو یه دکمه بذارم که انتقال کلید اصلی رو به یه صفحه دیگه انجام بده و همینطور عمل حذف رو ممنون میشم