Ich habe eine datengebundene Listbox, die für jede Auswahl autoposts. Ich möchte alle ausgewählten Werte in einem Parameter (@ Product_Type2) speichern und in einer SQL-Update-Abfrage verwenden können. Ich kann die Listbox-Werte als eine Zeichenfolge in einem Textfeld (TextBox1) speichern, aber die Abfrage kann nicht alle Werte verwenden. Dies ist in einer SharePoint-ASP und kann nicht Code hinter verwenden. Ich habe einen Code-Snipit eingefügt.mehrfache Auswahl datengebundene Listbox gespeichert als Parameter für sql Datenquellenaktualisierung
<asp:ListBox runat="server" id="ListBox2" DataTextField="ProductDesc" DataSourceID="SqlDataSourceDropdownProd_2" DataValueField="Product_Type2" AutoPostBack="True" SelectionMode="Multiple">
</asp:ListBox>
<br />
<br />
<script type="text/javascript">
$(function() {
var values = "('";
var selected = $("[id*=ListBox2] option:selected");
selected.each(function() {
values += $(this).val() + "','";
});
document.getElementById('TextBox1').value =(values)+'zzz' + "')";
return false;
});
</script>
<asp:TextBox runat="server" id="TextBox1" Width="255px" Height="334px" AutoPostBack="True">
</asp:TextBox>
<asp:SqlDataSource id="SqlDataSourceDropdownProd_2" runat="server" ...
SelectCommand="SELECT DISTINCT sdt.[Product Type2] AS Product_Type2, pd2.ProductDesc, pd2.line
FROM dbo.sportsCD_Data_TEST AS sdt INNER JOIN
dbo.Dim_Product_Type2 AS pd2 ON sdt.[Product Type2] = pd2.Product
ORDER BY pd2.line" OldValuesParameterFormatString="original_{0}">
</asp:SqlDataSource>
<asp:SqlDataSource id="SqlDataSourceDropdownProd_3" runat="server" ...
SelectCommand="SELECT [Sales Pro Number] AS Sales_Pro_Number, [New Price] AS New_Price, [Product Type2] AS Product_Type2, [Percent], Dollar
FROM dbo.sportsCD_Data_TEST
WHERE ([Product Type2] in (@Product_Type2))"
UPDATE [sportsCD_Data_TEST] SET
[New Price] = CONVERT(decimal(10, 2), CAST([Sell Price] AS float) * (CAST(@Percent AS float)/100)
+ CAST([Sell Price] AS float)+ CAST(@Dollar as float)) , [Percent] = 0, [Dollar] = 0
WHERE ([Product Type2] in (@Product_Type2))" <SelectParameters>
<asp:controlparameter ControlID="TextBox1" PropertyName="Text" Name="Product_Type2" />
</SelectParameters>
<UpdateParameters>
<asp:parameter Name="Percent" Type="Decimal" />
<asp:parameter Name="Dollar" Type="Decimal" />
<asp:parameter Name="Product_Type2" />
</UpdateParameters>
</asp:SqlDataSource>
</form>
Es sieht aus wie Sie versuchen, Ihre Update-Anweisung eine Zeichenfolge (wie "('A', 'B', 'C', 'zzz')" zu füttern), so dass Ihre Update-Anweisung es als eine einzelne Zeichenfolge liest, anstatt es zu analysieren. Wenn Sie analysieren möchten, was in der Zeichenfolge enthalten ist, müssen Sie dynamisches SQL verwenden. Alternativ könnten Sie den Code neu schreiben, um eine kommagetrennte Eingabe zu erhalten, die Eingabe zu teilen und dann basierend darauf zu aktualisieren. – ZLK
Könnten Sie mir helfen, dies in eine brauchbare Form zu bringen? –