PDA

View Full Version : RowUpdating در Datagrid



bardia goharbin
سه شنبه 04 مهر 1385, 19:58 عصر
در #C
WebApplication
من یک GridView دارم که در هنگام Update یک Row قصد دارم محتوای TextBoxهای موجود در آن Row را خوانده و در دیتابیس ذخیره کنم.
تنها در قسمت خواندن مقدار محتوای TextBox های موجود در Row مشکل دارم لطفا مرا راهنمایی کنید. نمونه این سئوال با VB را بررسی کرده ام ولی هرچه تلاش کردم که آنرا به زبان #C برگردانم و استفاده کنم موفق نشدم.
تا اینجا میدانم که باید از FindControl استفاده کنم ولی چگونه و چطور نمیدانم. اگر کسی نمونه کدی برای #C دارد لطفا راهنمایی کند.

mahdi_negahi
سه شنبه 04 مهر 1385, 22:00 عصر
ببینید اول شما باید ستونی که میخواهید به وسیله Findcontrol مقدار textbox را بخوانید به صورت Template باشد بعد در قسمت edit یک textbox بندازید و ID انرا یک ID درست حسابی بدهید بعد با findcontrol آنرا پیدا کنید

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

AFSHIN_REFUA
سه شنبه 04 مهر 1385, 22:09 عصر
TextBox tx;
tx = (TextBox) e.Item.FindControl("txttedad");
این هم 2003 است

bardia goharbin
سه شنبه 04 مهر 1385, 22:56 عصر
دوست عزیز mahdi_negahi کلیه کارهایی که فرمودید بنده انجام داده ام فقط گیر کار در همان قسمت آخر است که چگونه میتوان در RowUpdating این کار را انجام داد و از TextBoxها مقادیر را گرفت.
در مورد نمونه grid آقای راد هم باید عرض کنم که آنرا با VB.NET نوشته اند در صورتیکه بنده به کد یا نمونه ای یا کمکی برای #C با FrameWork 2 احتیاج دارم چون اگر اشتباه نکنم بخصوص در این قسمت بکلی متفاوت است.
تا آنجایی که بنده اطلاع دارم این قسمت در #C با FrameWork2 تغییراتی نسبت به قبل داشته است.

اگر شما دستور کاملی از این قسمت را برای خواندن مثلا مقادیر از یک Textbox در زمان Update را دارید ممنون میشوم .

Behrouz_Rad
چهارشنبه 05 مهر 1385, 00:07 صبح
عرض شود که بنده بین دو جماعت VB.NET کار و C#.NET کار گیر کردم!
با هر زبانی که بنویسم گروه دیگری خواهان ارائه ی کد با زبان مورد علاقش میشه!
Grid View رو با VB.NET و Client Callbacks رو با C#.NET ارائه کردم اما باز هم این اختلاف وجود داره...
به هر حال....
هیچ تفاوتی در نسخه ی 2 با نسخه ی 1.1 در این زمینه وجود نداره.
شما باید خاصیت DataKey کنترل GridView رو برابر با نام فیلد AutoNumber در جدول مربوطه قرار بدی تا GridView قادر به تشخیص رکورد در زمان آپدیت باشه.
Type Casting نیز تفاوت اندکی در این دو زبان داره که جناب "AFSHIN_REFUA" به اون اشاره کرده.

موفق باشید.

mahdi_negahi
چهارشنبه 05 مهر 1385, 09:35 صبح
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow editRow = GridView1.Rows[e.RowIndex];
Label lID = (Label)editRow.FindControl("ID");
TextBox txtNew = (TextBox)editRow.FindControl("name");
string strName = txtNew.Text;
int productID = int.Parse(lID.Text);
Sqlconnection1.Open();
SqlCommand Query = new SqlCommand("دستورUpdate+where ID" + productID, Sqlconnection1);
if (Query.ExecuteNonQuery() > 0)
{
Response.Write("ثبت انجام شد");
}
GridView1.EditIndex = -1;
FillGridView();
}

ID و nameدر editItem ستون موردنظر است البته از کار استاد راد هم برای بدست آوردن ID میتوانید کمک بگیرید

Neda_Bagheri
دوشنبه 21 اسفند 1385, 12:27 عصر
[quote=mahdi_negahi;269712]
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow editRow = GridView1.Rows[e.RowIndex];
Label lID = (Label)editRow.FindControl("ID");
TextBox txtNew = (TextBox)editRow.FindControl("name");
string strName = txtNew.Text;
int productID = int.Parse(lID.Text);
Sqlconnection1.Open();
SqlCommand Query = new SqlCommand("دستورUpdate+where ID" + productID, Sqlconnection1);
if (Query.ExecuteNonQuery() > 0)
{
Response.Write("ثبت انجام شد");
}
GridView1.EditIndex = -1;
FillGridView();
}
می شه معادل این کد را به vb بنویسید ؟

iman_22a
دوشنبه 21 اسفند 1385, 14:54 عصر
می شه معادل این کد را به vb بنویسید ؟



Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
Dim editRow As GridViewRow = GridView1.Rows(e.RowIndex)
Dim lID As Label = editRow.FindControl("ID")
Dim txtNew As TextBox = editRow.FindControl("name")
Dim strName As String = txtNew.Text
Dim productID As Integer = Integer.Parse(lID.Text)
Sqlconnection1.Open()
Dim Query As SqlCommand = New SqlCommand("دستورUpdate+where ID" + productID, Sqlconnection1)
If (Query.ExecuteNonQuery() > 0) Then
Response.Write("ثبت انجام شد")
End If
GridView1.EditIndex = -1
FillGridView()
End Sub

nima_dir
دوشنبه 15 تیر 1388, 16:18 عصر
سلام دوستان
من این کد رو در ایونت RowUpdating نوشتم:


string s = GridView1.DataKeys[e.RowIndex].Value.ToString();
Label EmployeeID = GridView1.Rows[e.RowIndex].FindControl("EmployeeID") as Label;
TextBox LastName = GridView1.Rows[e.RowIndex].FindControl("txtLastName") as TextBox;
TextBox Title = GridView1.Rows[e.RowIndex].FindControl("txtTitle") as TextBox;
TextBox Country = GridView1.Rows[e.RowIndex].FindControl("txtCountry") as TextBox;

اما این کد مقادیر رو قبل از تغییر به من میده. یعنی من هر تغییری بدم باز همون مقادیر قبلی رو دریافت میکنم
در ضمن من از ولیدیتور ها استفاده کردم اما اصلا تاثیری ایجاد نمیکنه و حتی اگر از ReqiredField استفاده کنم بازم صفحه پست بک میشه.این هم کد گرید ویو:



<asp:GridView ID="GridView1" runat="server" GridLines="None" AutoGenerateColumns="false"
AlternatingRowStyle-BackColor="#EEEEEE" EditRowStyle-BorderColor="Red"
onrowcancelingedit="GridView1_RowCancelling" onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating" DataKeyNames="EmployeeID">
<Columns>
<asp:TemplateField Visible="false" HeaderText="EmployeeID">
<ItemTemplate>
<asp:Label runat="server" ID="EmployeeID" Text='<%#Eval("EmployeeID")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LastName">
<ItemTemplate>
<asp:Label runat="server" ID="LastName" Text='<%#Eval("LastName") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtLastName" Text='<%#Eval("LastName") %>' />
<asp:RequiredFieldValidator runat="server" ID="rfdLastName" ControlToValidate="txtLastName" ValidationGroup="var1″ ErrorMessage="*" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<asp:Label runat="server" ID="Title" Text='<%#Eval("Title") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtTitle" Text='<%#Eval("Title") %>' />
<asp:RequiredFieldValidator runat="server" ID="rfdTitle" ControlToValidate="txtTitle" ValidationGroup="var1″ ErrorMessage="*" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Country">
<ItemTemplate>
<asp:Label runat="server" ID="Country" Text='<%#Eval("Country") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtCountry" Text='<%#Eval("Country") %>' />
<asp:RequiredFieldValidator runat="server" ID="rfdCountry" ControlToValidate="txtCountry" ValidationGroup="var1″ ErrorMessage="*" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:LinkButton ID="btnEdit" Text="Edit" runat="server" CommandName="Edit" />
<br />
<asp:LinkButton ID="btnDelete" Text="Delete" runat="server" CommandName="Delete" />
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="btnUpdate" Text="Update" runat="server" CommandName="Update" />
<asp:LinkButton ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" />
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

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