AutoComplete 属性について学習した後 -ContextKey
私はそれを利点として使用しています:
すべてのエクステンダー オブジェクトのデータ ソースは、同じ WebMethod によって処理されます。
それ自体が、私にとっての成果です。
すべてがほぼ完璧になった今、問題は次のとおりです。
stage = table was selected の直後に、AutoComplete-Datasource のリクエストが 2 番目のテキストボックスによって送信されるときに、別のパラメーターを渡す必要があります。
ハードコードされた/定数だけでなく、選択したテーブルの値も必要です。
#TBX_TableSelectorFirstStage
これは、ハードコードされた値とともに、実際には のContextKey
値です...
(のようなものContextKey += value of TBX_TableSelectorFirstStage
)
そのため、要求されたテーブル(テーブルの名前)で指定された列リストを描画できます
これはJquery
コードです
<script type="text/javascript">
$('document').ready(function () {
var IvalidValue_Msg = "table was not selected";
var TBX_tables = $(this);
var TBX_Columns = $('#TBX_ColumnsSelectorFirstStage');
$('#TBX_TableSelectorFirstStage')
.val("Choose a Table")
.focus(function () {
$(this).val("");
$(this).attr("dir", "ltr");
}).blur(function () {
var TBXTablsVALUE = $('#TBX_TableSelectorFirstStage').val();
var Lngth = $('#TBX_TableSelectorFirstStage').val().length;
var InvalidTBXBlur_TablesValue = TBXTablsVALUE == "" || TBXTablsVALUE == " " || Lngth < 4;
if (InvalidTBXBlur_TablesValue) {
$(this).focus();
$(this).val(IvalidValue_Msg);
}
else {
$(TBX_Columns).focus();
SetContextKeyValue();
}
//$(this).next(':input').focus();
}).change(function () {
var TBXTablsVALUE = $('#TBX_TableSelectorFirstStage').val();
var Lngth = $('#TBX_TableSelectorFirstStage').val().length;
var InvalidTBXBlur_TablesValue = TBXTablsVALUE == "" || TBXTablsVALUE == " " || Lngth < 4;
if (InvalidTableValue) {
$(this).val(IvalidValue_Msg);
}
else {
SetContextKeyValue();
}
}).click(function () {
$(this).val("");
});
});
/// ==========================================================\\\
///Jquery Section That Is Suppose To manipulate contextKey Property.
function SetContextKeyValue() {
// var ttt = $get('AjaxAcEx_Columns_FirstStage',
alert("asasas");
// var x = $('#AutoCompleteExtender3'); //.set_contextKey($get('AjaxAcEx_Tables_FirstStage').value);
alert($('#AjaxAcEx_Columns_FirstStage').attr("id"));
}
これはASPX コードです
<form id="form1" runat="server">
<cc1:ToolkitScriptManager ID="ToolKitScrptMan1" runat="server"></cc1:ToolkitScriptManager>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" TargetControlID="TBX_FntsAC" runat="server"
MinimumPrefixLength="1" EnableCaching="true" CompletionSetCount="1" CompletionInterval="100"
ServiceMethod="MyAcReqHandler" ContextKey="acFontsRquest"
FirstRowSelected="true" CompletionListCssClass="CL_Css_DataBase" CompletionListItemCssClass="CL_ItemCss_DataBase" CompletionListHighlightedItemCssClass="CL_tHighlightedItemCss_DataBase">
</cc1:AutoCompleteExtender>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender2" BehaviorID="AjaxAcEx_Tables_FirstStage" TargetControlID="TBX_TableSelectorFirstStage" runat="server"
MinimumPrefixLength="1" EnableCaching="true" CompletionSetCount="1" CompletionInterval="100"
ServiceMethod="MyAcReqHandler" ContextKey="acTablesSelector_FirstStage"
FirstRowSelected="true" CompletionListCssClass="CL_Css_DataBase" CompletionListItemCssClass="CL_ItemCss_DataBase" CompletionListHighlightedItemCssClass="CL_tHighlightedItemCss_DataBase">
</cc1:AutoCompleteExtender>
<%-- Here is where i am stuck .
object /element - AutoCompleteExtender3 / BehaviorID AjaxAcEx_Columns_FirstStage
This is the object i need to Set it's ContextKey attribute-value,
with the result value of #TBX_TableSelectorFirstStage
--%>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender3" BehaviorID="AjaxAcEx_Columns_FirstStage" TargetControlID="TBX_ColumnsSelectorFirstSTage" runat="server"
MinimumPrefixLength="1" EnableCaching="true" CompletionSetCount="1" CompletionInterval="100"
ServiceMethod="MyAcReqHandler" ContextKey="acColumnsSelector_FirstStage"
FirstRowSelected="true" CompletionListCssClass="CL_Css_DataBase" CompletionListItemCssClass="CL_ItemCss_DataBase" CompletionListHighlightedItemCssClass="CL_tHighlightedItemCss_DataBase">
</cc1:AutoCompleteExtender>
<div id="Div_firstStage" runat="server" style="width:90%" dir="rtl">
<asp:TextBox ID="TBX_TableSelectorFirstStage" runat="server" />
<asp:TextBox ID="TBX_ColumnsSelectorFirstStage" runat="server" />
</div>
* .Cs コード ビハインド* (webMethod)
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod(EnableSession = true)]
public static List<string> MyAcReqHandler(string prefixText, string contextKey)
{
List<string> retListAC = new List<string>();
switch (contextKey)
{
case AutoComplete.Param.acTablesSelector_FirstStage:
retListAC = GetListForAutoComplete<HTDB_Tables>(App.VarNms.SesDbTablsList);
break;
case AutoComplete.Param.acColumnsSelector_FirstStage:
retListAC = GetListForAutoComplete<HTDB_Cols>(App.VarNms.SesDbTablsList);
break;
case AutoComplete.Param.acFontsRquest_SecondStage:
retListAC = GetListForAutoComplete<fntNams>(App.VarNms.SesFontsList);
break;
}
return AutoComplete.FromListStr(prefixText, retListAC);
}
private static List<string> GetListForAutoComplete<TheClassNameHere>(string SessionVarName, string NestedClassName="")
{
List<string> ReturnedList = new List<string>();
if (CurrSesVarSet.SesVar_AcDsListStr.Count == 0)
{
bool isNested = typeof(TheClassNameHere).IsNested;
switch (isNested)
{
case true:
ReturnedList = RflectMeths.anyNestedClassFldsAsListByType<TheClassNameHere>(NestedClassName);
break;
default:
ReturnedList = RflectMeths.anyClassFldsAsListByType<TheClassNameHere>();
break;
}
CurrSesVarSet.SesVar_AcDsListStr = ReturnedList;
CurrentSession.AddVar(SessionVarName, ReturnedList);
}
else
if (CurSessionMesthods.VarExistStat(App.VarNms.SesFontsList))
ReturnedList = CurSessionMesthods.GetSessionVar.AsListStr(SessionVarName);
else ReturnedList = CurrSesVarSet.SesVar_AcDsListStr;
return ReturnedList;
}
このアプリケーションでの取り組みの 1 つは完全なポスト バックを回避ContextKey
することだったので、実装したいと思いますJquery
。フル ページ ポスト バックなので、ページをリロードせずに完了した場合は、このパラメーターを送信できる限り気にする必要はありません。
ご協力いただきありがとうございます。これを解決していただければ幸いです。