背景:C#のコードは、ASP .NETで別の関数の完了時に差し出がましい機能にジャンプ
私は、ユーザーがID番号を提出することができ、私のWebページ内の場所を持っています。テキストボックスにIDを入力するか、ドロップダウンリストから頻繁に使用するIDを選択することができます。これらの2つの入力元は本質的に同じことをするので、私は両方に対して同じコールバック関数を使用します。この関数では、送信者がテキストボックスかドロップダウンか(および適切な検証チェック)を確認するチェックがあります。
問題:
私は、この関数からいくつかの非常に奇妙な行動を取得しています。この関数が呼び出され、送信者がドロップダウンリストである場合、すべてが想定どおりに機能します。ただし、この関数が呼び出され、送信者がテキストボックスの場合、関数を終了するまですべてが正常に表示されます。関数が終了すると、コントロールはすぐに、その関数内のどこでも呼び出さなかった別の無関係な関数にジャンプします。それは私がそれをテストし、デバッガでWeb上の両方のジャンプになります。常に同じ関数にジャンプします。この関数自体は、ページ上の他の場所(ユーザーが明示的にボタンを押したときにのみ呼び出される)のプッシュボタンのコールバック関数です。
私はこれをやっている理由が分からず、何がうまくいかないのか分からない。
関連するコード
注:それが重要ならば、両方のテキストボックスやドロップダウンリストには、GridViewののEditItemTemplateです。
<asp:TextBox ID="TextBoxCQ" runat="server" BackColor="#ffcccc" Text="Enter CQ here" onclick="$(this).val('');" OnTextChanged="cq_Selected_In_Edit"></asp:TextBox>
<asp:DropDownList ID="AssociatedCQList" runat="server" BackColor="#ffcccc" AppendDataBoundItems="True" Font-Size="Smaller" AutoPostBack="True" DataSourceID="SqlDataSource_CQList" DataTextField="cqdetail" DataValueField="cqID" OnSelectedIndexChanged="cq_Selected_In_Edit">
<asp:ListItem Selected="True" Enabled="true" Value="Select from list of CQ's">Select from list of CQ's </asp:ListItem>
</asp:DropDownList>
背後にあるコード:
protected void cq_Selected_In_Edit(object sender, EventArgs e)
{
object type = sender.GetType();
string name = ((System.Reflection.MemberInfo)(type)).Name;
bool isTextbox = (name == "TextBox"); // to be used throughout the function
GridViewRow Row;
string text;
if (isTextbox) // it's the textbox calling
{
Row = (GridViewRow)((System.Web.UI.WebControls.TextBox)(sender)).NamingContainer;
text = ((System.Web.UI.WebControls.TextBox)(sender)).Text;
}
else // it's the dropdown calling
{
Row = (GridViewRow)((System.Web.UI.WebControls.DropDownList)(sender)).NamingContainer;
text = ((System.Web.UI.WebControls.ListControl)(sender)).Text;
}
// do more processing, etc etc
}
を私たちは、関連するコードを見ることなく、あなたを助けることができない、質問を編集してください。 – Esko
ページにはいくつのボタンがあり、どのようにテキストボックスコールバックがトリガーされていますか? –
[How To:TextBox Webサーバーコントロールの変更に対応](https://msdn.microsoft.com/en-us/library/2589b44c(v = vs.110).aspx) - 「既定では、 TextChangedイベントでWebフォームページがサーバーに直接ポストされるのではなく、次回フォームがポストされたときにイベントがサーバーコードで生成されます」「観察すると、コードはテキストボックスでAutoPostbackを使用しません*何か他の*がフォームを投稿させていることを意味するコントロール。私はそのボタンが呼び出されているかどうか(あなたが意図したかどうかにかかわらず)です。 –