【问题标题】:seting default dropdownlist value from sql table in aspx在 aspx 中从 sql 表中设置默认下拉列表值
【发布时间】:2016-02-16 01:06:25
【问题描述】:

我对 C# 和 aspx 文件非常陌生。我们使用的是 2008 年编写的非常旧的应用程序,并且没有开发人员的任何联系方式。我们要做的是进行一些更改,因为原始代码的某些部分不再相关。 我设法找到 .aspx 文件并进行了一些更改,但其中一些不起作用。试图找到 .aspx.cs 文件,但看起来它们都是在 bin 文件夹中的 .dll 文件中编译的。我确实在备份中找到了原始的 .aspx.cs 文件。

我遇到的问题是表单中的字段之一是下拉列表,并且链接到sql中的数据表并根据需要进行设置。当我打开网页时,这个下拉列表中的默认值为-选择联系方式-。

我的理解是因为后面的代码如下:

# region populate ContactMethod Combo(Primary and Secondary)**
private void PopulateContactMethod(int intContactMethodID)
{
    // get data
    MasterValue oMV = new MasterValue();
    DataTable dt = oMV.GetAll(MasterValueType.ContactMethod);
    // populate combo
    oUtil.PopulateCombo(cboContact, dt, "intID", "strText",
    intContactMethodID.ToString(), "-Select Contact Method-");
}
# endregion

SQL 表具有以下值 1=家庭电话、2=手机、3=电子邮件和 4=无

.aspx 文件有以下内容:

<%@ Page CodeBehind="add_new_user.aspx.cs" Language="c#" AutoEventWireup="false"
 Inherits="App.UI.add_new_user" %>
.
.
.
<tr>
    <td class="formtext" align="right">Primary Contact Method:<SPAN class="star">*</SPAN>
    </td>
    <td class="formtext" vAlign="top" align="left">
       <asp:dropdownlist id="cboContact" runat="server" CssClass="ListBox" Width="150px">
       </asp:dropdownlist>
       <asp:requiredfieldvalidator id="rfvContactMethod" runat="server" 
        ControlToValidate="cboContact" Display="None" ErrorMessage="Please select contact
        method" InitialValue="0">
       </asp:requiredfieldvalidator>
    </td>
</tr>

我们需要的是当我们打开这个下拉列表中的网页默认值是None(4)而不是-Select Contact Method-。

任何帮助将不胜感激!

提前谢谢你。

【问题讨论】:

  • 我怀疑您的问题是否有简单的解决方案,因为您无权访问后面的代码。但是为什么你不能使用你在备份中找到的代码并使用它和你已经拥有的 aspx 创建一个新的解决方案?然后就可以很自然地编辑后面的代码了。
  • 嗨,安德烈,我想到了这个。但首先,由于我对这一切都不熟悉,所以我不知道该怎么做,因为看起来大约有 1000 个 .aspx .aspx.cs 和 .aspx.resx 文件都在 .dll 文件中编译。其次,由于该应用程序已有 9 年历史,我们仍在每天使用它,我不想破坏它。所以试图找到解决方案。谢谢
  • 只有客户端的解决方案对您有用吗,javascript 是吗?因为不修改你想要的代码是不可能的
  • 嗨安德烈,我想这会奏效。我需要的是,当有人使用此 Web 表单添加新用户时,他们不必选择此字段。

标签: c# asp.net


【解决方案1】:

据我所知,这个 .aspx 页面不使用母版页。如果是这样,请找到 &lt;head&gt; 标记并向其添加新的 &lt;script&gt;。在它里面会有一个修复列表选择的函数:

<head>
    ...
    <script type="text/javascript">
      function fixContactListSelection() {
          var list = document.getElementById("<%=cboContact.ClientID%>");
          list.value = '4';
      }

      if (window.addEventListener) {
          window.addEventListener('load', fixContactListSelection, false);
      } else if (window.attachEvent) {
          window.attachEvent('onload', fixContactListSelection);
      }
    </script>
</head>

但是,如果使用了母版页,而您找不到 head 标签,请在页面的几乎任何位置插入此 &lt;script&gt; 及其内容。在 DDL 声明下应该没问题。

【讨论】:

  • 嗨,Andrei,试过这样做,当我打开表单时,这个下拉列表中的默认值仍然是 -Select Contact Method- :-(
  • @Yuri,刚刚在我的脚本代码中发现了一个错误,请更新。另外,您是否在页面上看到任何 javascript 错误?
  • @Andrei,非常感谢!你是明星,它终于成功了!
  • @Andrei,是否可以修改此代码,使其仅选择此值为空白或-选择联系方法-的值?这样做的原因是 aspx 文件用于新用户和现有用户。因此,如果我打开现有用户,比如更新他们的地址或联系电话,联系方式字段会自动更改为无。如果这样做太复杂,请不要担心。
【解决方案2】:

尝试像这样绑定下拉列表

 private void PopulateContactMethod(int intContactMethodID)
    {
    DataTable dt = new DataTable();
            dt = "get Your data from db";

            cboContact.DataSource = dt;
            cboContact.DataTextField = dt.Columns["field to view"].ToString();
            cboContact.DataValueField = dt.Columns["id of field to view"].ToString();
            cboContact.DataBind();
            ListItem li1 = new ListItem("--Select Contact Method--", "0");
            cboContact.Items.Insert(0, li1);
    }

线

ListItem li1 = new ListItem("--Select Contact Method--", "0");
                cboContact.Items.Insert(0, li1);

将“--Select Contact Method--”设为默认值

【讨论】:

  • 同上,如果这需要进入.aspx.cs那么我不能这样做。而且我不想将“--Select Contact Method--”作为默认值,我希望将“None”作为默认值。谢谢
  • 你说你不能访问 .aspx.cs 文件对吗?试试这个链接。它解释了如何使用服务器标签嵌入代码块 aspsnippets.com/Articles/…
  • 嗨,Sruthi,感谢您的链接。我看了看,但我不知道如何在我的 aspx 文件中使用
【解决方案3】:

尝试在页面加载后使用 javascript 或 jquery 添加

 $("#<%=cboContact.ClientID%>").val("None");

【讨论】:

  • 对不起,如上所述,我是编码新手。将其放入 .aspx 文件中吗?如果是在哪里?如果它转到 .aspx.cs 那么我无法编辑它,因为它是在 bin 文件夹中的 .dll 文件中编译的
  • 你可以在你的 .aspx.cs 文件中添加这个,然后在你需要绑定下拉列表的地方调用方法 PopulateContactMethod(int intContactMethodID)
  • 我没有 .apx.cs 文件,我只有 .dll 文件
  • 在这种情况下,在 aspx 页面本身中添加以下内容,如下所示
  • 嗨,拉姆,当我打开页面时尝试这样做,字段中的默认值仍然是“--选择联系方式--”。我昨天在研究网络时确实尝试过类似的方法。
【解决方案4】:

请在下方查看

MasterValue oMV = new MasterValue();
DataTable dt = oMV.GetAll(MasterValueType.ContactMethod);
//Now you assign specific field name and field id like below
cboContact.DataSource = dt;
cboContact.DataTextField = "strText";
cboContact.DataValueField = "intID";
cboContact.DataBind();

它将解决您的问题。

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2013-10-23
    • 2011-06-14
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多