PDA

View Full Version : سوال: بروز رسانی اطلاعات در گرید



fakhravari
دوشنبه 28 فروردین 1391, 12:00 عصر
با سلام
من یه همچین کدی دارم
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="مشخصه درس" DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display.">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="نام و نام خانوادگی" HeaderText="نام و نام خانوادگی"
ReadOnly="True" SortExpression="نام و نام خانوادگی" />
<asp:BoundField DataField="مشخصه درس" HeaderText="مشخصه درس" ReadOnly="True"
SortExpression="مشخصه درس" />
</Columns>





</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TGJConnectionString2 %>"
DeleteCommand="DELETE FROM [TeacherCources] WHERE [ID] = @ID"
InsertCommand="INSERT INTO [TeacherCources] ([TeacherID], [CourceID]) VALUES (@TeacherID, @CourceID)"
ProviderName="<%$ ConnectionStrings:TGJConnectionString2.ProviderNam e %>"
SelectCommand="SELECT Persons.Name + ' ' + Persons.Family AS [نام و نام خانوادگی], Courses.ID AS [مشخصه درس] FROM Teachers INNER JOIN Persons ON Teachers.PersonID = Persons.ID INNER JOIN TeacherCources ON Teachers.ID = TeacherCources.TeacherID INNER JOIN Courses ON TeacherCources.CourceID = Courses.ID"
UpdateCommand="UPDATE [TeacherCources] SET [TeacherID] = @TeacherID, [CourceID] = @CourceID WHERE [ID] = @ID">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int64" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="TeacherID" Type="Int16" />
<asp:Parameter Name="CourceID" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="TeacherID" Type="Int16" />
<asp:Parameter Name="CourceID" Type="String" />
<asp:Parameter Name="ID" Type="Int64" />
</UpdateParameters>
</asp:SqlDataSource>



الان روی حالت Edit کلیک میکنم چرا اون حالت بروز رسانی نمیاد.
دلیل این نیست که iner join کردم؟
یا باید این حالت درست کرد> edit template

hobab-theme
دوشنبه 28 فروردین 1391, 19:21 عصر
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
View mode
</ItemTemplate>
<EditItemTemplate>
Edit mode
</EditItemTemplate>
<InsertItemTemplate>
Insert mode
</InsertItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


خوب حالا فرض کن یه دکمه داری که میخوای با اون مد Edit رو نمایش بدی. دکمه ها خصیصه ای بنام CommandName دارن. اون رو روی Edit تنظیم کن

در ضمن تو مد Edit میتونی از TextBox هم استفاده کنی

fakhravari
دوشنبه 28 فروردین 1391, 19:37 عصر
ببنید من در این جدول داده ها را از جدول اصلیش میخونم.
مثل استان - شهر
توی ثبتنام کد شهر میگیرم و برای نمایش از iner join اسم شهر نمایش میدم.
حالا برای ویرایش کردن
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="مشخصه درس"
DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="نام و نام خانوادگی" HeaderText="نام و نام خانوادگی" ReadOnly="True"
SortExpression="نام و نام خانوادگی" />
<asp:BoundField DataField="مشخصه درس" HeaderText="مشخصه درس" ReadOnly="True" SortExpression="مشخصه درس" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandName="Edit" Text="Button" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("TeacherID") %>'></asp:TextBox>
</EditItemTemplate>

</asp:TemplateField>

</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TGJConnectionString2 %>"
DeleteCommand="DELETE FROM [TeacherCources] WHERE [ID] = @ID" InsertCommand="INSERT INTO [TeacherCources] ([TeacherID], [CourceID]) VALUES (@TeacherID, @CourceID)"
ProviderName="<%$ ConnectionStrings:TGJConnectionString2.ProviderNam e %>" SelectCommand="SELECT Persons.Name + ' ' + Persons.Family AS [نام و نام خانوادگی], Courses.ID AS [مشخصه درس] FROM Teachers INNER JOIN Persons ON Teachers.PersonID = Persons.ID INNER JOIN TeacherCources ON Teachers.ID = TeacherCources.TeacherID INNER JOIN Courses ON TeacherCources.CourceID = Courses.ID"
UpdateCommand="UPDATE [TeacherCources] SET [TeacherID] = @TeacherID, [CourceID] = @CourceID WHERE [ID] = @ID">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int64" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="TeacherID" Type="Int16" />
<asp:Parameter Name="CourceID" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="TeacherID" Type="Int16" />
<asp:Parameter Name="CourceID" Type="String" />
<asp:Parameter Name="ID" Type="Int64" />
</UpdateParameters>
</asp:SqlDataSource>
بعد که روی دکمه edit کلیک میکنم که کمد نام دادم ارور میده میگه این فیلد رد پراپرتی نیست؟

hobab-theme
دوشنبه 28 فروردین 1391, 19:46 عصر
خوب برادر فیلد TeacherID رو هم بگیر از بانکت دیگه. الان این فیلد رو بر نمیگردونه و فقط فیلدهای Name و Family از جدول Persons رو میگیری

fakhravari
دوشنبه 28 فروردین 1391, 20:39 عصر
آره درسته:بامزه:

fakhravari
دوشنبه 28 فروردین 1391, 20:43 عصر
خوب الان فرض کنیم که روی دکمه بروز رسانی کلیک کردیم.
الان مقادیر نشون میده یکی از مقادیر یه DropDownList که باید اطلاعات از یه جدول دیگه بخونه.
حالا اینو چطوری پیاه سازی کنیم.
که نام ها بیایند و بعد از انتخاب مقدار id ایتم در جدول ذخیره بشه.

fakhravari
چهارشنبه 30 فروردین 1391, 18:49 عصر
دوستان پست 6 ایا شدنی؟

fakhravari
جمعه 01 اردیبهشت 1391, 14:15 عصر
دوستان منظورم درست رسوندم :متفکر:

clover
جمعه 01 اردیبهشت 1391, 15:10 عصر
الان مقادیر نشون میده یکی از مقادیر یه DropDownList که باید اطلاعات از یه جدول دیگه بخونه.
کافیه یه دیتاسورس برای خوندن مقادیر مورد نظر تعریف کنید و ویژگی DataSourceId مربوط به کنترل DropDownList رو با Id این دیتاسورس مقدار دهی کنید. از طرفی ویژگی های DataTextField و DataValueField رو نیز با فیلد های مورد نظر مقدار دهی کنید. تا اینجا DropDownList ای در اختیار دارید که مقادیر رو از بانک می خونه. در ادامه ویژگی SelectedValue این DropDownList رو به فیلد مورد نظر بایند کنید.

موفق باشید

fakhravari
جمعه 01 اردیبهشت 1391, 15:19 عصر
با سلام
اگر ممکن یه نمونه مثال بزنید. :لبخند:
در ادامه ویژگی SelectedValue این DropDownList رو به فیلد مورد نظر بایند کنید. چطوری ؟؟
چون اینها خودشون یه تمپلت خاصی دارن که وقتی روی edit , insert کلیک میکنیم تغیر میکنند.
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowSelectButton="True" />
<asp:BoundField DataField="نام و نام خانوادگی" HeaderText="نام و نام خانوادگی" ReadOnly="True"
SortExpression="نام و نام خانوادگی" />
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True"
SortExpression="ID" InsertVisible="False" />
<asp:BoundField DataField="TeacherID" HeaderText="TeacherID"
SortExpression="TeacherID" />
<asp:BoundField DataField="CourceID" HeaderText="CourceID"
SortExpression="CourceID" />
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
</Columns>

clover
جمعه 01 اردیبهشت 1391, 15:25 عصر
در ادامه ویژگی SelectedValue این DropDownList رو به فیلد مورد نظر بایند کنید. چطوری ؟؟
به این مثال دقت کنید:

<Columns>
<asp:CommandField ShowDeleteButton="True" ShowSelectButton="True" />
<asp:BoundField DataField="نام و نام خانوادگی" HeaderText="نام و نام خانوادگی" ReadOnly="True"
SortExpression="نام و نام خانوادگی" />
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True"
SortExpression="ID" InsertVisible="False" />
<asp:TemplateField HeaderText="TeacherID" SortExpression="TeacherID">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server"
DataSourceID="SqlDataSource1" DataTextField="TeacherName" DataValueField="TeacherID"
SelectedValue='<%# Bind("TeacherID") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("TeacherID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CourceID" HeaderText="CourceID"
SortExpression="CourceID" />
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
</Columns>


چون اینها خودشون یه تمپلت خاصی دارن که وقتی روی edit , insert کلیک میکنیم تغیر میکنند.
بله و به همین خاطر باید از TemplateField استفاده کنید.