javascript - 我的下拉菜单将自动回发设置为打开,它根据选择填充文本框字段,但它也在重新加载其他回发事件
问题描述
我有一个所有者下拉菜单,当用户选择所有者时,它会自动填充 前提 ID 文本字段。我想修改 ifPostBack 的代码,这样当我回去更改所有者时它不会刷新 loadOtherSpecimenType。
我无法修改 OnSelectedIndexChanged 方法,因为它在页面上一次又一次地调用。
我的 aspx 文件:
<div class="row form-group form-group-sm">
<div class="col-xs-2">
<asp:Label ID="lblOwner" CssClass="control-label" runat="server"
Text="*Owner:"></asp:Label
</div>
<div class="col-xs-4">
<asp:DropDownList ID="ddlOwner" aria-label="Owner" runat="server"
AutoPostBack="true" EnableViewState ="true" CssClass="form-control"
OnSelectedIndexChanged="ddlOwner_SelectedIndexChanged" >
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvOwner" runat="server" Enabled="true"
SetFocusOnError="true"
ErrorMessage="Required" InitialValue="0" ControlToValidate="ddlOwner"
ForeColor="Red"
ValidationGroup="vGrpPreview" EnableClientScript="true"
Display="Dynamic"></asp:RequiredFieldValidator>
</div
</div>
aspx.cs 文件:
protected void Page_Load(object sender, EventArgs e)
{ //Some code here
if (IsPostBack)
{
Console.WriteLine("");
loadOtherSpecimenType();
Console.WriteLine("");
}
if (!IsPostBack)
{
/*
If (guuest){
load textboxes for DVM, Billing Owner, Copty To
}
else { //code below */
getDdlDVM();
getDdlBillTo();
getDdlCopyTo();
getDdlOwner();
getDdlSpecies();
var referer1 = HttpContext.Current.Request.UrlReferrer;
我的 OnSelectedIndexChanged 函数:
protected void ddlOwner_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
string _username = "";
if (Session["username"] != null)
{
_username = Session["username"].ToString();
}
if (_username != string.Empty)
{
if (dbconn.State != ConnectionState.Closed)
{
dbconn.Close();
}
dbconn.Open();
string owner = QuoteHandler(this.ddlOwner.SelectedItem.ToString());
string query = "select * from ( " +
"SELECT b.id,b.premiseID,b.lname,b.fname,b.lname +case when len(b.fname)> 0 then ', ' + b.fname else '' end + " +
"case when len(b.mname)> 0 then ' ' + b.mname else '' " +
"end + ' - ' + b.city + ', ' + b.state as ddlOwner,[OwnerKey] " +
"from [ADRDL_OwnerInfo] AS b INNER JOIN [ADRDL_ClinicInfo] AS c " +
"ON c.ClinicKey=b.ClinicKey " +
"WHERE username='" + _username + "' and b.[adminAction]= 'Active' and b.OwnerKey is not null) t where ddlOwner= '" + owner + "';";
cmd = new SqlCommand(query, dbconn);
tablerdr = cmd.ExecuteReader();
if (tablerdr.HasRows)
{
while (tablerdr.Read())
{
ddlPremiseID.Text = tablerdr["premiseID"].ToString();
}
tablerdr.Close();
}
}
}
catch (Exception ex)
\\code for catch statement
\\end of code
我可以对我的 Page_Load 函数做些什么来确保当我更改 Owner 选择时回发不会重新加载 loadSpecimenType 函数。
解决方案
这是关于如何修改以防止在引发自动Page_Load
回发时触发某个功能的一般方式或概念 - 这可能不完全适合您的用例,但它说明了预期使用的方式,您应该能够根据您的特定要求对其进行定制:ddlOwner
__EVENTTARGET
注意:我在您的原始帖子中观察到您为OnSelectedIndexChanged
for定义了一个事件处理程序ddlOwner
,但未显示该处理程序,所以我不能说它是否需要修改。
void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
// If we are posting back, AND the inducing postback control is *NOT*
// the owner dropdown, reload the specimen type
if (Request.Form["__EVENTTARGET"] != ddlOwner.ClientID)
{
loadOtherSpecimenType();
}else
{
// other code here //
}
}
else
{
// code for non-postback load here
}
}
推荐阅读
- c++ - 如何在 Linux 上获得支持的显示刷新率?
- python - 如何找到我的分类输入形状?
- c# - EventHubProcessor 租约在主机之间一次又一次地被盗
- android - Android Studio 错误:检测到 UTF-16 (LE) 字节顺序标记,但不支持编码
- mysql - 1292 列“updated_at”的日期时间值不正确
- python - 使用 x、y、z 图和第四个变量显示颜色图/图例
- c# - MsBuild C# csproj:将开发环境平台名称(Win、Mac 等)放入属性中
- bash - 尽管 echo 显示变量相等,但平等比较在 bash 脚本中不起作用
- vb.net - 将文件名返回到数据网格 - 子目录
- ruby-on-rails - Rails/Heroku/Cloudflare:域更改后无法验证 CSRF 令牌的真实性