2017-04-11 19 views
0

我重複使用一些代碼,我已經有很多與其他頁面,在這裏唯一的顯著差異的成功的部分是我捕捉複選框的值在我過去沒有做過的面板中。代碼示例在下面提供,但我遇到的癥結在於,我似乎無法找到SqlDataSource中列出的一組可接受的參數。處理的複選框的<asp:ControlParameter> SqlDataSource的

它所拋出這個是:「數據類型爲varchar和位都在增加操作符不兼容。」

這是當我在ASP中使用類型=「布爾」:ControlParameter。我嘗試了asp:ControlParameter中的數字類型和其他語法,但沒有成功。

<% - 從過濾器潘內爾 - %>

<% - SqlDataSource控件 - %>

<asp:SqlDataSource runat="server" ID="SqlDataSource1" CancelSelectOnNullParameter="false" ConnectionString='<%$ ConnectionStrings:csrConnectionString %>' DeleteCommand="DELETE FROM [csr_refdata_ip360_HostVulnerabilityCSV] WHERE [RecID] = @RecID" InsertCommand="INSERT INTO [csr_refdata_ip360_HostVulnerabilityCSV] ([DNS Name], [NetBIOS Name], [IP], [OS], [Vulnerability Score], [Vulnerability], [Vulnerability ID], [TicketNumber], [TicketClosed], [AssetID], [ExceptionID], [Notes]) VALUES (@DNS_Name, @NetBIOS_Name, @IP, @OS, @Vulnerability_Score, @Vulnerability, @Vulnerability_ID, @TicketNumber, @TicketClosed, @AssetID, @ExceptionID, @Notes)" SelectCommand="SELECT RecID, [DNS Name] AS DNS_Name, [NetBIOS Name] AS NetBIOS_Name, IP, OS, [Vulnerability Score] AS Vulnerability_Score, Vulnerability, [Vulnerability ID] AS Vulnerability_ID, TicketNumber, TicketClosed, AssetID, ExceptionID, Notes FROM csr_refdata_ip360_HostVulnerabilityCSV WHERE (Excepted = @Excepted) AND (RTRIM(LTRIM(ISNULL(@RecID, ''))) = '' OR RecID LIKE '%' + @RecID + '%') AND (RTRIM(LTRIM(ISNULL(@DNS_Name, ''))) = '' OR [DNS Name] LIKE '%' + @DNS_Name + '%') AND (RTRIM(LTRIM(ISNULL(@NetBIOS_Name, ''))) = '' OR [NetBIOS Name] LIKE '%' + @NetBIOS_Name + '%') AND (RTRIM(LTRIM(ISNULL(@IP, ''))) = '' OR IP LIKE '%' + @IP + '%') AND (RTRIM(LTRIM(ISNULL(@OS, ''))) = '' OR OS LIKE '%' + @OS + '%') AND (RTRIM(LTRIM(ISNULL(@Vulnerability_Score, ''))) = '' OR [Vulnerability Score] LIKE '%' + @Vulnerability_Score + '%') AND (RTRIM(LTRIM(ISNULL(@Vulnerability, ''))) = '' OR Vulnerability LIKE '%' + @Vulnerability + '%') AND (RTRIM(LTRIM(ISNULL(@Vulnerability_ID, ''))) = '' OR [Vulnerability ID] LIKE '%' + @Vulnerability_ID + '%') AND (RTRIM(LTRIM(ISNULL(@TicketNumber, ''))) = '' OR TicketNumber LIKE '%' + @TicketNumber + '%') AND (RTRIM(LTRIM(ISNULL(@TicketClosed, ''))) = '' OR TicketClosed LIKE '%' + @TicketClosed + '%') AND (RTRIM(LTRIM(ISNULL(@Notes, ''))) = '' OR Notes LIKE '%' + @Notes + '%') AND (RTRIM(LTRIM(ISNULL(@AssetID, ''))) = '' OR AssetID LIKE '%' + @AssetID + '%') AND (RTRIM(LTRIM(ISNULL(@ExceptionID, ''))) = '' OR ExceptionID LIKE '%' + @ExceptionID + '%') ORDER BY Vulnerability_Score DESC, Vulnerability, NetBIOS_Name" UpdateCommand="UPDATE [csr_refdata_ip360_HostVulnerabilityCSV] SET [DNS Name] = @DNS_Name, [NetBIOS Name] = @NetBIOS_Name, [IP] = @IP, [OS] = @OS, [Vulnerability Score] = @Vulnerability_Score, [Vulnerability] = @Vulnerability, [Vulnerability ID] = @Vulnerability_ID, [TicketNumber] = @TicketNumber, [TicketClosed] = @TicketClosed, [AssetID] = @AssetID, [ExceptionID] = @ExceptionID, [Notes] = @Notes WHERE [RecID] = @RecID"> 
    <DeleteParameters> 
     <asp:Parameter Name="RecID" Type="Int32"></asp:Parameter> 
    </DeleteParameters> 
    <InsertParameters> 
     <asp:Parameter Name="DNS_Name" Type="String"></asp:Parameter> 
     <asp:Parameter Name="NetBIOS_Name" Type="String"></asp:Parameter> 
     <asp:Parameter Name="IP" Type="String"></asp:Parameter> 
     <asp:Parameter Name="OS" Type="String"></asp:Parameter> 
     <asp:Parameter Name="Vulnerability_Score" Type="Int16"></asp:Parameter> 
     <asp:Parameter Name="Vulnerability" Type="String"></asp:Parameter> 
     <asp:Parameter Name="Vulnerability_ID" Type="Int32"></asp:Parameter> 
     <asp:Parameter Name="TicketNumber" Type="Int32"></asp:Parameter> 
     <asp:Parameter Name="TicketClosed" Type="Boolean"></asp:Parameter> 
     <asp:Parameter Name="AssetID" Type="Int64"></asp:Parameter> 
     <asp:Parameter Name="ExceptionID" Type="Int32"></asp:Parameter> 
     <asp:Parameter Name="Notes" Type="String"></asp:Parameter> 
    </InsertParameters> 
    <SelectParameters> 
     <asp:Parameter DefaultValue="N" Name="Excepted" Type="String"></asp:Parameter> 
     <asp:ControlParameter Name="RecID" ControlID="RecID_Tbx" Type="Int32" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="DNS_Name" ControlID="DNSName_Tbx" Type="String" ConvertEmptyStringToNull="true"/> 
     <asp:ControlParameter Name="NetBIOS_Name" ControlID="NetBIOSName_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="IP" ControlID="IP_Tbx" Type="String" ConvertEmptyStringToNull="true"/> 
     <asp:ControlParameter Name="OS" ControlID="OS_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="Vulnerability_Score" ControlID="Vulnerability_Tbx" Type="Int16" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="Vulnerability" ControlID="Vulnerability_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="Vulnerability_ID" ControlID="VulnerabilityID_Tbx" Type="Int32" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="TicketNumber" ControlID="TicketNum_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 

    <%--<%--<%-- This is the problem line below --%>--%>--%> 
     <asp:ControlParameter Name="TicketClosed" ControlID="TicketClosed_ChBox" Type="Boolean" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="Notes" ControlID="Notes_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="AssetID" ControlID="AssetID_Tbx" Type="Int64" ConvertEmptyStringToNull="true" /> 
     <asp:ControlParameter Name="ExceptionID" ControlID="ExceptionID_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
    </SelectParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="DNS_Name" Type="String"></asp:Parameter> 
     <asp:Parameter Name="NetBIOS_Name" Type="String"></asp:Parameter> 
     <asp:Parameter Name="IP" Type="String"></asp:Parameter> 
     <asp:Parameter Name="OS" Type="String"></asp:Parameter> 
     <asp:Parameter Name="Vulnerability_Score" Type="Int16"></asp:Parameter> 
     <asp:Parameter Name="Vulnerability" Type="String"></asp:Parameter> 
     <asp:Parameter Name="Vulnerability_ID" Type="Int32"></asp:Parameter> 
     <asp:Parameter Name="TicketNumber" Type="Int32"></asp:Parameter> 
     <asp:Parameter Name="TicketClosed" Type="Boolean"></asp:Parameter> 
     <asp:Parameter Name="AssetID" Type="Int64"></asp:Parameter> 
     <asp:Parameter Name="ExceptionID" Type="Int32"></asp:Parameter> 
     <asp:Parameter Name="Notes" Type="String"></asp:Parameter> 
     <asp:Parameter Name="RecID" Type="Int32"></asp:Parameter> 
    </UpdateParameters> 
</asp:SqlDataSource> 

我如何能這個東西任何瞭解複選框到我的ControlParameter正確將不勝感激。我已經用盡了我的想法。

+0

您是否考慮過將類型從布爾型更改爲Byte ..例如 '' – MethodMan

+0

是。我這樣做,以及煤焦,Int16的,字符串,併爲sbyte了類似的結果。我正在考慮將數據庫表更改爲Char。我注意到你的例子中的某些東西,我可能錯過了......現在嘗試它。我沒有設置類型的PropertyName =「Checked」。 –

+0

@MethodMan我tweeked它讀取如你所說是結果「換算轉換爲varchar值‘%’爲int數據類型時失敗了。」切換回你的語法布爾並得到「的數據類型爲varchar和位處於不兼容添加運算符「。 –

回答

1

我結束了改變db表更改列爲varchar(1),這樣我可以設置GridView中的所有綁定列。然後更新我的到:

<SelectParameters> 
<asp:Parameter DefaultValue="N" Name="Excepted" Type="String"></asp:Parameter> 
<asp:ControlParameter Name="RecID" ControlID="RecID_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="DNS_Name" ControlID="DNSName_Tbx" Type="String" ConvertEmptyStringToNull="true"/> 
<asp:ControlParameter Name="NetBIOS_Name" ControlID="NetBIOSName_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="IP" ControlID="IP_Tbx" Type="String" ConvertEmptyStringToNull="true"/> 
<asp:ControlParameter Name="OS" ControlID="OS_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="Vulnerability_Score" ControlID="VulnerabilityScore_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="Vulnerability" ControlID="Vulnerability_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="Vulnerability_ID" ControlID="VulnerabilityID_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="TicketNumber" ControlID="TicketNum_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="TicketClosed" ControlID="TicketClosed_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="Notes" ControlID="Notes_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="AssetID" ControlID="AssetID_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 
<asp:ControlParameter Name="ExceptionID" ControlID="ExceptionID_Tbx" Type="String" ConvertEmptyStringToNull="true" /> 

一切現在工作正常.... MethodMan,感謝您的輸入!這個完成了!