我有一个大型数据库,其中每一行都有一个唯一的文档代码,然后是每个数量和每个成员/非成员的价格。即每个数量的价格为会员价格和非会员价格。 (会张贴一张照片,但显然我没有足够的声誉)。
无论如何,我使用如下所示的select命令从数据库中删除值:
<asp:SqlDataSource id="sds_docReader" ConnectionString="<%$ ConnectionStrings:constr %>"
runat="server" SelectCommand="
SELECT '--Please Select--' AS fld_DocCode, '' AS myValue, 0 as myorder
UNION
SELECT fld_DocCode, (CAST([fld_MemCost25] AS varchar(10)) + '^^' + CAST([fld_NonMemCost25] AS varchar(10)) + '@@' + CAST([fld_MemCost50] AS varchar(10)) + '^^' + CAST([fld_NonMemCost50] AS varchar(10)) + '@@' + CAST([fld_MemCost75] AS varchar(10)) + '^^' + CAST([fld_NonMemCost75] AS varchar(10)) + '@@' + CAST([fld_MemCost100] AS varchar(10)) + '^^' + CAST([fld_NonMemCost100] AS varchar(10)) + '@@' + CAST([fld_MemCost200] AS varchar(10)) + '^^' + CAST([fld_NonMemCost200] AS varchar(10)) + '@@' + CAST([fld_MemCost300] AS varchar(10)) + '^^' + CAST([fld_NonMemCost300] AS varchar(10)) + '@@' + CAST([fld_MemCost400] AS varchar(10)) + '^^' + CAST([fld_NonMemCost400] AS varchar(10)) + '@@' + CAST([fld_MemCost500] AS varchar(10)) + '^^' + CAST([fld_NonMemCost500] AS varchar(10))) AS myValue,
1 as myorder
FROM [tbl_DocData]
ORDER BY myorder, fld_DocCode " />
并将其推入我的下拉列表的值字段,以便在页面后端获得类似内容:
value="60.50^^75.50@@121.00^^151.00@@135.75^^181.50@@181.00^^242.00@@362.00^^484.00@@453.00^^633.00@@484.00^^724.00@@605.00^^905.00"
所以这就是我现在要做的事情:
在每个@@拆分值字段以获得一组价格对:
"[member_price]^^[non_memberprice]"
使用数量下拉列表中的.selectedindex
,我从我刚刚制作的数组中拉出正确的一对。
然后最后一步是将价格对数组从price1^^price2
拆分为price1, price2
然后,根据他们是否已经选中一个方框来显示他们是否为会员,我将采用该数组的0索引成员(价格对的左侧)作为会员价格,或非成员价格的数组的1索引成员。
这是我试图用来执行上述操作的代码:
Protected Sub btn_Calc_Command(sender As Object, e As System.Web.UI.WebControls.CommandEventArgs)
'get the left side of the price pairs (members)
Dim side As Integer = 0
If cb_CCTAMember.Checked = True Then
'get the right side (non members)
side = 1
End If
If AC1.SelectedItem.Text <> "--Please Select--" And Quan1.SelectedItem.Text <> "0" Then
'we calculate
'get right hidden value string
Dim costs As String = AC1.SelectedItem.Value
'split by quantity to get price pairs
Dim costarray As Array
costarray = costs.Split("@@")
'get right pair
Dim pair As String = costarray(Quan1.SelectedIndex - 1)
'split the pair
Dim sprice As Array
sprice = pair.Split("^^")
'show cost as the right value
Cost1.Value = sprice(side)
End If
End Sub
所以目前它有效,但只适用于其他所有价值。即它适用于25但不适用于50,适用于75但不适用于100。
我错过了任何关于可能出现问题的明显/任何想法/关于获得相同结果的替代方法的想法。
欢呼声
答案 0 :(得分:0)
这可能会或可能不会起作用,但请尝试将string.split()
替换为:
costs.Split({"@@"}, StringSplitOptions.RemoveEmptyEntries)
和
pair.Split({"^^"}, StringSplitOptions.RemoveEmptyEntries)
由于split()函数保留在空条目中这一事实,我猜你在处理奇数时遇到了问题......
就像我说的那样,它可能无法解决问题,但我之前已经解决过类似问题...