PDA

View Full Version : ایراد کد من در مورد button در گریدویو چی؟؟



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.



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

alireza_s_84
دوشنبه 27 مهر 1388, 15:29 عصر
سلام دوست عزیز:


از طرفی اگه کسی می تونه یه راهی پیشنهاد بده که من بتونم توی گریدویو یه دکمه بذارم که انتقال کلید اصلی رو به یه صفحه دیگه انجام بده و همینطور عمل حذف رو ممنون میشم

یعنی منظورتون اینه که با کلیک روی Button به یک صفحه دیگه برید و عمل حذف رو اونجا انجام بدین؟

yekta64
دوشنبه 27 مهر 1388, 16:54 عصر
نه دوست عزیر
من می خوام توی هر سطر گرید ویو یه button بذارم که با کلیک روی اون دکمه به صفحه دیگه برم و کلید اصلی مربوط به هر سطر گریدویو که در اینجا StdID هستش رو هم به صفحه بعد منتقل کنه تا اینکه توی صفحه بعد بتونم بر اساس این کلید اصلی عمل ویرایش رو انجام بدم
ممنون میشم راهنماییم کنید

alireza_s_84
دوشنبه 27 مهر 1388, 18:21 عصر
نه دوست عزیر
من می خوام توی هر سطر گرید ویو یه button بذارم که با کلیک روی اون دکمه به صفحه دیگه برم و کلید اصلی مربوط به هر سطر گریدویو که در اینجا StdID هستش رو هم به صفحه بعد منتقل کنه تا اینکه توی صفحه بعد بتونم بر اساس این کلید اصلی عمل ویرایش رو انجام بدم
ممنون میشم راهنماییم کنید
سلام دوست عزیز:
شما CommandName اون Button که قرار دادین رو Select بذارید و یا اگر از خود CommandFields های گرید ویو استفاده میکنید نوع اون رو select انتخاب کنید.
بعد در رویداد SelectedIndexChanged گرید ویو میتونید اینجوری عمل کنید:


protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Redirect(String.Format("EditPage.aspx?CId={0}", GridView1.SelectedDataKey.Value));
}

و در رویداد Page_Load صفحه ی ویرایش اینجوری عمل کنید:


protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["CId"] != null)
{
Int32 CId = Int32.Parse(Request.QueryString["CId"]);
}
}

اینجوری میتونید DataKey رو منتقل کنید.
مشکلی بود مطرح کنید
موفق باشید