Обновление базы данных SQL с использованием gridview/templatefield
Кто-нибудь знает, как получить столбец Templatefield текстовых полей для подачи данных, введенных в них обратно в базу данных sql, используя SqlDataSource, уже используемый в gridview, в котором находится поле шаблона, и поле button, использующее функцию обновления? Мне просто интересно, есть ли у кого-нибудь идеи, как заставить это работать, потому что я не смог найти никакого способа сделать это.
Пожалуйста, дайте мне знать, если кому-то из вас понадобится дополнительная информация, чтобы помочь вам решить эту дилемму.
Я могу получить информацию для обратной передачи на сервер SQL, если я включаю редактирование и изменение информации в текстовом поле, а также в поле другого столбца в той же строке, но оно не будет обновляться, если я только изменю информацию в текстовое поле в режиме редактирования или просто нажав кнопку обновления.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<center>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="Brdcst_Nbr" DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display." Width="657px">
<Columns>
<asp:BoundField DataField="Brdcst_Nbr" HeaderText="Brdcst_Nbr" ReadOnly="True"
SortExpression="Brdcst_Nbr" />
<asp:BoundField DataField="Item_Nbr" HeaderText="Item_Nbr"
SortExpression="Item_Nbr" ReadOnly="True" />
<asp:CheckBoxField DataField="IsPicked" HeaderText="IsPicked"
SortExpression="IsPicked" />
<asp:TemplateField SortExpression="Row" HeaderText="Row">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Mode="twoway" AutoPostBack="true" CausesValidation="true" Text='<%# Bind("Row") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Mode="twoway" AutoPostBack="true" CausesValidation="true" Text='<%# Bind("Row") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" CommandName="Update" Text="Update" />
<asp:ButtonField ButtonType="Button" CommandName="Edit" Text="Edit" />
</Columns>
<EditRowStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<RowStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:ORDCConnectionString1 %>"
DeleteCommand="DELETE FROM [Test_New_Transpick] WHERE [Brdcst_Nbr] = @original_Brdcst_Nbr AND (([Item_Nbr] = @original_Item_Nbr) OR ([Item_Nbr] IS NULL AND @original_Item_Nbr IS NULL)) AND [IsPicked] = @original_IsPicked AND (([Row] = @original_Row) OR ([Row] IS NULL AND @original_Row IS NULL))"
InsertCommand="INSERT INTO [Test_New_Transpick] ([Brdcst_Nbr], [Item_Nbr], [IsPicked], [Row]) VALUES (@Brdcst_Nbr, @Item_Nbr, @IsPicked, @Row)"
UpdateCommand="UPDATE [Test_New_Transpick] SET [IsPicked] = @IsPicked, [Row] = @Row WHERE [Brdcst_Nbr] = @original_Brdcst_Nbr"
OldValuesParameterFormatString="original_{0}"
ProviderName="<%$ ConnectionStrings:ORDCConnectionString1.ProviderName %>"
SelectCommand="SELECT * FROM [Test_New_Transpick]" >
<DeleteParameters>
<asp:Parameter Name="original_Brdcst_Nbr" Type="String" />
<asp:Parameter Name="original_Item_Nbr" Type="String" />
<asp:Parameter Name="original_IsPicked" Type="Boolean" />
<asp:Parameter Name="original_Row" Type="String" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Brdcst_Nbr" Type="String" />
<asp:Parameter Name="Item_Nbr" Type="String" />
<asp:Parameter Name="IsPicked" Type="Boolean" />
<asp:Parameter Name="Row" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="Item_Nbr" Type="String" />
<asp:Parameter Name="IsPicked" Type="Boolean" />
<asp:Parameter Name="Row" Type="String" />
<asp:Parameter Name="original_Brdcst_Nbr" Type="String" />
<asp:Parameter Name="original_Item_Nbr" Type="String" />
<asp:Parameter Name="original_IsPicked" Type="Boolean" />
<asp:Parameter Name="original_Row" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
</form>
</center>
</body>
</html>
1 ответ
Таким образом, изменение свойства базы данных SQL с CompareAllValues на OverwriteChanges устранило эту проблему. Теперь он позволяет записывать изменения обратно в базу данных sql, просто изменив текстовое поле в строке / столбце, которое нужно было обновить, не меняя ничего другого.