2015-12-15 3 views
0

Я работаю над ASP (внутри платежного шлюза). Параметры в раскрывающемся списке при вводе из базы данных. Я не могу прикоснуться к базе данных, поэтому вам придется атаковать вопрос из кода.Исключить определенные выборы из выпадающего списка ASP

Вот имя значение, которое мне нужно, чтобы исключить _01BM(Q)

Вот код для падения вниз.

<select name="programgroup" onchange="onProgramGroup()">      
<% Call buildDropDownList(strProgramGroupCode, rsProgramGroup, "ProgramGroupCode", "ProgramGroupDescription", False)%> 
</select> 

Я бы очень признателен за любую помощь в этом отношении.

Вот код для метода:

Sub buildDropDownList(strCurrentSelection, objListData, strCodeName, strDescriptionName, blnIncludeOther) 
    If Not objListData.BOF Then 
     objListData.MoveFirst 
    End If 
    While Not objListData.EOF 
     Response.Write "<option value='" & objListData(strCodeName) & "' " 
     If StrComp(strCurrentSelection, objListData(strCodeName),1) = 0 then 
      Response.Write "selected" 
     End If 
     Response.Write ">" & objListData(strDescriptionName) & "</option>" & VbCrLf 
     objListData.MoveNext 
    Wend 

    if blnIncludeOther then 
     Response.Write "<option value='<Other>' " 
     If strCurrentSelection <> "" and InStr(1, "<Other>", strCurrentSelection) = 1 then 
      Response.Write "selected" 
     End If 
     Response.Write ">Other</option>" & VbCrLf 
    end if 
End Sub 
+6

Было бы неплохо опубликовать код 'buildDropDownList'. – krlzlx

+0

Спасибо, я все еще пытаюсь найти эту функцию в момент, когда я смотрю в файле include.asp, но нигде не ссылается на ProgramGroupCode – user2219472

ответ

1

Вам придется изменить метод строительства падения вниз. Поскольку вы не предоставили нам код для этого, я дам вам скелет и могу использовать его для изменения вашего фактического кода.

Чтобы сделать его более универсальным и менее уродливым, лучше передать значения (ы), чтобы исключить метод, как массив, вместо жесткого кодирования там.

Таким образом, метод должен выглядеть следующим образом:

Sub buildDropDownList(strProgramGroupCode, rsProgramGroup, someParamHere, anotherParam, boolParam, arrValuesToExclude) 
    Dim excludedValuesMapping, x 
    Set excludedValuesMapping = Server.CreateObject("Scripting.Dictionary") 
    For x=0 To UBound(arrValuesToExclude) 
     excludedValuesMapping.Add(LCase(arrValuesToExclude(x)), True) 
    Next 

    '...unknown code here... 

    Do Until rsProgramGroup.EOF 
     strCurrentValue = rsProgramGroup(valueFieldName) 
     If excludedValuesMapping.Exists(LCase(strCurrentValue)) Then 
      'value should be excluded, you can do something here, but not write it to browser 
     Else 
      strCurrentText = rsProgramGroup(textFieldName) 
      Response.Write("<option value=""" & Replace(strCurrentValue, """", "&quot;") & """>" & strCurrentText & "</option>") 
     End If 
     rsProgramGroup.MoveNext 
    Loop 
End Sub 

И использовать его:

<% Call buildDropDownList(strProgramGroupCode, rsProgramGroup, "ProgramGroupCode", "ProgramGroupDescription", False, Array("_01BM(Q)"))%> 

Теперь иметь свой код, и если вы не хотите, чтобы сделать его универсальным, вы может также игнорировать конкретные значения при наличии такого кода в buildDropDownList суб:

Dim currentCodeValue 
While Not objListData.EOF 
    currentCodeValue = objListData(strCodeName) 
    If (UCase(currentCodeValue)<>"_04GIDBM") And _ 
     (UCase(currentCodeValue)<>"_05GIDFM") And _ 
     (UCase(currentCodeValue)<>"_08EXHRM") And _ 
     (UCase(currentCodeValue)<>"_10EXMKT") And _ 
     (UCase(currentCodeValue)<>"_12EXTTH") And _ 
     (UCase(currentCodeValue)<>"_17EXHSC") Then 
     Response.Write "<option value='" & currentCodeValue & "' " 
     If StrComp(strCurrentSelection, currentCodeValue, 1) = 0 then 
      Response.Write "selected" 
     End If 
     Response.Write ">" & objListData(strDescriptionName) & "</option>" & VbCrLf 
    End If 
    objListData.MoveNext 
Wend 

Это будет просто пропустите любые записи с такими значениями и не выведет для них вариант выпадающего списка.

+0

Большое вам спасибо за ваше время и силы, но я не буду лгать. Я немного потерялся на этом теперь, когда блок buildDropDownList кода - это то, что я пытаюсь понять. Для записи я согласен, что код очень грязный, но тем не менее я должен продолжать это, пока не найдется решение. – user2219472

+0

Это решение, @ user2219472 - если вы не можете понять, как изменить отправку метода, что у вас есть, и, возможно, мы можем помочь вам в том, что там можно изменить. –

+0

Уважаемый волшебник тени, Спасибо вам, и да, я все еще борюсь с этим. Могли бы вы, возможно, дать какой-то шаг в отношении того, что вы хотите, чтобы я поставлял. К сожалению, я не могу опубликовать всю страницу здесь ;-) – user2219472

Смежные вопросы