天道酬勤,学无止境

如何在 ASP.NET 中将下拉控件绑定到数据源(How to bind a drop-down control to a data source in ASP.NET)

问题

我是 C# 的新手。

我有一个创建 HR 系统的项目,我创建了一个页面来添加员工,但主管要求我创建一个下拉列表,在添加新员工时显示部门。

我不知道如何开始以及我应该先做什么。 我已经从工具中添加了一个下拉列表,但我不知道如何选择数据源以及它的名称和值。 我应该选择部门表还是员工表?

public partial class _Default : Page
{

    private String strcon = ConfigurationManager.ConnectionStrings["hr"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)

            bindgrideview();
    }
    protected void bindgrideview()
    {
        SqlConnection strcon1 = new SqlConnection(strcon);
        strcon1.Open();
        string ADDStr = "SELECT F_name , L_name , salary FROM Employee ";
        SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1);
        DataTable table = new DataTable();


        SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd);

        adapter.Fill(table);
        GridView1.DataSource = table;
        GridView1.DataBind();

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string F_name = TextBox1.Text;
        string L_name = TextBox2.Text;
        int status = 1;
        string salarystr = TextBox3.Text.ToString();
        int salary = Int32.Parse(salarystr);
        SqlConnection strcon1 = new SqlConnection(strcon);
        strcon1.Open();
        string ADDStr = "ADDEMP";
        SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1);
        ADDCmd.CommandType = CommandType.StoredProcedure;
        ADDCmd.Parameters.AddWithValue("@F_name", F_name);
        ADDCmd.Parameters.AddWithValue("@L_name", L_name);
        ADDCmd.Parameters.AddWithValue("@status", status);
        ADDCmd.Parameters.AddWithValue("@salary", salary);

        ADDCmd.ExecuteNonQuery();
        bindgrideview();
        TextBox1.Text = "";
        TextBox2.Text = "";
    }

这是我的页面的屏幕截图:http://store2.up-00.com/Nov12/YXb11858.png

这是最终代码,没有错误,但下拉列表没有项目:(

public partial class _Default : Page
{

    private String strcon = ConfigurationManager.ConnectionStrings["hr"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)

            bindgrideview();
    }
    protected void bindgrideview()
    {
        SqlConnection strcon1 = new SqlConnection(strcon);
        strcon1.Open();
        string ADDStr = "SELECT F_name , L_name , salary FROM Employee ";
        SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1);
        DataTable table = new DataTable();


        SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd);

        adapter.Fill(table);
        GridView1.DataSource = table;
        GridView1.DataBind();

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string F_name = TextBox1.Text;
        string L_name = TextBox2.Text;
        int status = 1;
        string salarystr = TextBox3.Text.ToString();
        int salary = Int32.Parse(salarystr);
        SqlConnection strcon1 = new SqlConnection(strcon);
        strcon1.Open();
        string ADDStr = "ADDEMP";
        SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1);
        ADDCmd.CommandType = CommandType.StoredProcedure;
        ADDCmd.Parameters.AddWithValue("@F_name", F_name);
        ADDCmd.Parameters.AddWithValue("@L_name", L_name);
        ADDCmd.Parameters.AddWithValue("@status", status);
        ADDCmd.Parameters.AddWithValue("@salary", salary);

        ADDCmd.ExecuteNonQuery();
        bindgrideview();
        TextBox1.Text = "";
        TextBox2.Text = "";
        TextBox3.Text = "";
    }
    protected void bindDepartments()
    {
        SqlConnection strcon1 = new SqlConnection(strcon);
        strcon1.Open();
        string ADDStr = "SELECT ID,department_name FROM Department ";
        SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1);
        DataTable table = new DataTable();


        SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd);

        adapter.Fill(table);

        DropDownList1.DataSource = table;
        DropDownList1.DataValueField = "ID";
        DropDownList1.DataTextField = "department_name";
        DropDownList1.DataBind();

    }

}
回答1

由于您的代码适用于检索Employees信息。 从数据库中,您将检索Departments信息。 从你的部门表。

protected void bindDepartments()
{
    SqlConnection strcon1 = new SqlConnection(strcon);
    strcon1.Open();
    string ADDStr = "SELECT DepartmentId,DepartmentName FROM Departments ";
    SqlCommand ADDCmd = new SqlCommand(ADDStr, strcon1);
    DataTable table = new DataTable();


    SqlDataAdapter adapter = new SqlDataAdapter(ADDCmd);

    adapter.Fill(table);

    ddlDepartments.DataSource = table;
    ddlDepartments.DataValueField = "DepartmentId"; //The Value of the DropDownList, to get it you should call ddlDepartments.SelectedValue;
    ddlDepartments.DataTextField = "DepartmentName"; //The Name shown of the DropDownList.
    ddlDepartments.DataBind();

}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在 GridView asp.net 中将数据绑定到 DropDownList(Bind Data to DropDownList in GridView asp.net)
    问题 我有一个带有 GridView 的 Web 表单和 GridView 中的一些控件。 我在 gridview 的 EdtItemTemplate 中有一个 DropDownList。 我需要将此 DropDownList 与我的 CodeBehind 文件中的某个方法绑定,该方法返回 LisItems 类型的数组。 我面临的问题是这个。 由于控件位于 EditItemTemplate 中,因此使用 FindControl("MyControlID") 在任何 GridView 事件中似乎都不起作用,它返回 null,换句话说,它似乎无法找到控件,除非我使用 OnRowUpdating 事件,但我不能使用此事件,因为控件需要在此之前进行数据绑定。 无论如何我可以使用 <%# Bind("MyMethodName") %> 来绑定控件吗? 回答1 尝试这个 在 App_Code 中创建一个数据类,像这样 public static class Fruits { public static List<string> GetFruits() { return new string[] { "Apple", "Mango", "Banana", "Grapes" }.ToList(); } } 在您的页面中添加一个网格,我想你们都准备好了 <asp:GridView runat=
  • 如何在 FormView 控件的 EditItemTemplate 中绑定下拉列表?(How to bind dropdownlist in EditItemTemplate in FormView control?)
    问题 将 Visual Web Developer Express 2010 与 ASP.NET 4.0 结合使用。 我有一个 FormView,我想从数据库中设置一个默认值。 我无法让它绑定到数据库中的值。 我的 FormView 看起来像这样: <asp:FormView ID="frmOrderDetails" DataSourceID="sdsFormOrderDetails" runat="server" DataKeyNames="orderId"> <EditItemTemplate> <h3>Edit Order Details</h3> <asp:Label ID="lblStrategy" Text="Strategy:" AssociatedControlID="ddlStrategies" runat="server" /> <asp:DropDownList SelectedValue='<%# Bind("strategyId") %>' ID="ddlStrategies" runat="server" DataTextField="strategy" DataValueField="strategyId" DataSourceID="sdsStrategies" /> <asp:LinkButton id="lnkUpdate" Text=
  • 在Asp.Net中动态添加的控件(Dynamically added controls in Asp.Net)
    问题 我试图把头包在asp.net上。 我有很长一段时间的php开发人员背景,但是现在我面临着学习asp.net的任务,并且遇到了一些麻烦。 这很可能是因为我正试图将框架强制用于其不适合的用途-所以我想学习如何以“正确的方式”进行操作。 :-) 我的问题是如何在运行时以编程方式向页面添加控件。 据我所知,您需要在page_init中创建控件,否则它们将在下一个PostBack中消失。 但是很多时候,我遇到的问题是我不知道要在page_init中添加哪个控件,因为它取决于以前的PostBack中的值。 一个简单的场景可能是在设计器中添加了下拉控件的表单。 下拉菜单设置为AutoPostBack。 当发生PostBack时,我需要呈现一个或多个依赖于下拉控件中所选值的控件,并且最好使这些控件的行为就像设计中添加的一样(如“发回时,表现为”正确”)。 我在这里走错了路吗? 回答1 我同意这里的其他观点:“如果您可以摆脱动态创建控件的行为,那就去做吧……”(@ Jesper Blad Jenson aka着),但这是我过去使用动态创建控件解决的一个技巧。 问题是鸡肉和鸡蛋。 您需要使用ViewState创建控件树,并且需要创建控件树才能获取ViewState。 好吧,那几乎是正确的。 有一种方法可以在填充树的其余部分获取ViewState值。 那是通过重写LoadViewState(
  • 在asp.net中将数据绑定到html5 DataList(Binding data to html5 DataList in asp.net)
    问题 我正在尝试使用 HTML5。 当我们将数据从数据表绑定到 asp.net 下拉控件时,是否可以将数据绑定到 html5 中的数据列表。 我在哪里可以找到这个细节。 任何指针都非常感谢。 :) 谢谢 回答1 1) 将runat="server"分配给数据列表,以便可以从后面的代码访问它: Enter your favorite browser name:<br /> <input id="browserName" list="browsers" /> <datalist id="browsers" runat="server" /> 2) 循环遍历DataTable ,使用StringBuilder构造并连接选项列表,并将结果添加到InnerHtml属性 protected void Page_Load(object sender, EventArgs e) { DataTable table = new DataTable(); table.Columns.Add("BrowserName"); table.Rows.Add("IE"); table.Rows.Add("Chrome"); table.Rows.Add("Firefox"); table.Rows.Add("Opera"); table.Rows.Add("Safari"); var builder =
  • 如何将数据库中的数据绑定到下拉列表?(how to bind the data from database to the dropdown?)
    问题 假设在 .aspx 页面中,它们是下拉列表,我想在该下拉列表中绑定两个列。例如:- 在数据库中,他们的两列 First_name ,Last_name 。我希望这两个列的值使用 C# 出现在单个下拉列表中。 怎么做? 请告诉我。 回答1 如果您使用的是 sql 查询,请尝试以下操作: select First_name + ' ' + Last_name from table 然后你需要像往常一样在下拉菜单中绑定它。 dropdown1.DataSource = datatable; dropdown1.DataBind(); 回答2 在代码中执行此操作的另一种方法是将 SQL 数据源拖放到页面上并按以下方式进行配置。 <asp:sqldatasource id="SqlDataSource1" runat="server" connectionstring="<%$ ConnectionStrings:MyDatabase %>" selectcommand="SELECT [ID], [First_name] + ' ' + [Last_name] AS [FullName] FROM [tPerson]"></asp:sqldatasource> 然后你的下拉列表控件: <asp:dropdownlist id="ddlPeople" runat="server"
  • 如何将ASP.NET中继器控件动态绑定到数据源(How to dynamically bind asp.net repeater control to datasource)
    问题 我在页面中有一个带有简单下拉列表和转发器控件的页面。提交时转发器控件绑定到具有3列的datasource1。 现在我的要求是,如果我选择option2,它应该绑定到包含4列的datasource2。 <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <HeaderTemplate> <tr> <th align="left">Header1</th> <th align="left">Header3</th> <th align="left">Header2</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <asp:Label ID="Header1" runat="server" /></td> <td> <asp:Label ID="Header3" runat="server" /></td> <td> <asp:Label ID="Header2" runat="server" /></td> </tr> </ItemTemplate> 同一中继器是否可以动态绑定到异构数据源?如何在运行时指定标题模板和项目模板? 是否可以仅使用一个中继器控件和多个异构数据源来实现此方案? 回答1
  • 插入和更新问题(Issue with inserts and updates)
    问题 我是 ASP.NET/C# 的菜鸟,但我会尽力描述我的问题。 现在我有一个附加了 sql 源代码的 gridview; 它抓取正确的信息。 gridview 的信息将根据在网格之外的下拉列表中选择的内容而改变,这是有效的。 问题在于更新和插入。 一旦尝试更新。 (只要我在其中一列上单击编辑)我就会收到以下错误消息: “DropDownList2”有一个无效的 SelectedValue,因为它不存在于项目列表中。 参数名称:值 我将列拆分为模板,如下所示,以便我可以更轻松地管理它们。 “下拉列表 2”位于我的编辑模板中。 它连接到一个数据源; 这是与我的第一个下拉菜单完全相同的来源,它完美无缺。 所以我不相信它会是该过程背后的 sql。 但是,我确实将此下拉列表 2 绑定到了 Doctor。 现在我被告知绑定它,所以我不知道绑定是如何工作的 如果取消绑定,我至少可以在单击编辑后仍然看到网格,但是在更新后我收到错误消息:过程或函数 uspPatientUpdate 指定了太多参数。 现在我在网上寻找解决方案,但我无法解决绑定问题。 我会根据需要提供以下代码。 ASP: <asp:SqlDataSource ID="sdPatient" runat="server" ConnectionString="<%$ ConnectionStrings
  • 如何绑定到没有值的下拉列表(How to bind to a dropdown list with no value)
    问题 我已经编写了一些代码来对 gridview 进行批量更新。 在 gridview 中,我的模板字段之一有一个下拉列表: <asp:DropDownList ID="DDLCategories" runat="server" DataSourceID="odsCategories" DataTextField="txtCategory" DataValueField="intCategoryID" SelectedValue='<%# Bind("intCategoryID") %>'> <asp:ListItem Text="Please Select an item" Value ="-1"></asp:ListItem> </asp:DropDownList> 在我的数据库中,我有 800 条记录。 然而,只有少数被分配了“intCategoryID”的值。 其余为NULL。 批量更新的全部原因是更新所有“intCategoryID”字段并为每条记录分配一个类别 ID。 因为并非所有的“intCategoryID”都被分配了一个值,所以当我尝试呈现页面时出现错误。 下拉列表失败。 这是消息: 'DDLCategories' has a SelectedValue which is invalid because it does not exist in the list
  • 选择:jQuery 插件……在 asp.net 回发后不起作用(Chosen : jQuery plugin…does not work after postback in asp.net)
    问题 我在drop-down list使用 http://harvesthq.github.io/chosen/ control 。 一切都很顺利,但我面临一个问题,比如我正在设置下拉列表的属性,即AutoPostBack="true" ,在选择一项后,控件失去其属性并转换为普通drop-down list 任何人都可以对此有任何想法吗? 请建议我。 谢谢 回答1 如果您在$(document).ready();中绑定插件$(document).ready(); ,然后添加此代码并检查。 $(document).ready(function(){ //Binding Code Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); function EndRequestHandler(sender, args) { //Binding Code Again } }); 回答2 尝试添加此代码, <script type="text/javascript"> $(document).ready(function () { Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded) })
  • ASP.Net MVC框架和数据绑定(ASP.Net MVC framework and databinding)
    问题 我在掌握MVC框架背后的一些概念时遇到了一些麻烦。 我正在做一个非常简单的应用程序,将产品分类。 “创建”屏幕将仅使用一个下拉列表,显示类别列表,产品名称和提交。 在普通的.Net应用程序上,我会在Page_Load中对服务器下拉列表进行数据绑定,但是在MVC应用程序中,从数据库中检索类别并将其添加到下拉列表的最佳方法是什么? (对不起,我的问题非常笨拙,但是不幸的是,MVC上的资源是多余的,并且由于早期更改,示例经常被打断) 回答1 我不确定我是否能完全掌握,但是如果您的页面上只显示一种产品,而用户的唯一输入只是从下拉列表中选择一个类别,我可以帮忙(但我也是菜鸟!) 。 引用此页面: http://weblogs.asp.net/scottgu/archive/2008/05/27/asp-net-mvc-preview-3-release.aspx 您将要在控制器中为类别创建一个SelectList(可能引用一个ID,并显示一个Name)。 然后,将此SelectList添加到ViewData。 您也可以将其设置为ViewData.Model的一部分,并从View中引用它。 在您的视图中,将HtmlHelper用于DropDownList,它使用SelectList作为参数。 上面的链接应该更好地传达它,这只是一个快速的摘要。 该链接用于预览3,但我认为它仍然应该适用。
  • 使用jQuery更改下拉列表的选定值(Change the selected value of a drop-down list with jQuery)
    问题 我有一个带有已知值的下拉列表。 我想做的是使用jQuery将下拉列表设置为一个我知道存在的特定值。 使用常规JavaScript ,我会做类似的事情: ddl = document.getElementById("ID of element goes here"); ddl.value = 2; // 2 being the value I want to set it too. 但是,我需要使用jQuery来完成此操作,因为我将CSS类用于选择器(愚蠢的ASP.NET客户端ID ...)。 这是我尝试过的一些方法: $("._statusDDL").val(2); // Doesn't find 2 as a value. $("._statusDDL").children("option").val(2) // Also failed. 我该如何使用jQuery ? 更新 事实证明,我第一次使用它是正确的: $("._statusDDL").val(2); 当我在上面放一个警报时,它可以正常工作,但是当我删除警报并使其以全速运行时,我得到了错误 无法设置所选属性。 无效的索引 我不确定这是否是jQuery或Internet Explorer 6的错误(我猜是Internet Explorer 6 ),但这非常令人讨厌。 回答1 jQuery的文档指出: [jQuery
  • Silverlight 中最大的问题是什么? [关闭](What are the biggest gotchas in Silverlight? [closed])
    问题 关闭。 这个问题是基于意见的。 它目前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑这篇文章用事实和引文来回答问题。 6年前关闭。 改进这个问题 我最近一直在 Silverlight 工作,我慢慢发现开发虽然简单,但仍有一两个令人讨厌的问题潜伏在阴影中。 考虑到其中一些对我来说是多么困难,我认为将它们列在 SO 上可能有用,以便其他人从中受益。 我确信我遇到的那些与其他人的经历相比不算什么,我想尽量避免任何其他令人讨厌或耗时的惊喜。 那么,你有什么? 更新我已经更新了它以涵盖一般的 Silverlight。 因此,请在响应时提供与问题相关的版本或列表版本。 对于所有没有版本的人,请假设 Silverlight 2.0,因为这是原始问题中的情况。 回答1 我经历过的两个是: 跨域策略文件 为了让 Silverlight 与托管在不同域上的 Web 服务一起工作,服务器需要一个跨域策略文件。 这可以采用两种格式: 客户端访问策略.xml 跨域.xml 我无法让前者正常工作,但后者可以正常工作(Flash 使用第二个,而我相信第一个是特定于 ASP 的,尽管我无法在 ASP.NET 2.0 服务器下使其工作,所以它可能是 3.5 -具体的)。 组合框下拉调整大小 Silverlight 2.0 组合框控件仅在首次显示时调整其下拉区域的大小。 因此
  • 具有一个SelectedValue,它是无效的,因为它不存在于项目列表中。 您如何调试?(has a SelectedValue which is invalid because it does not exist in the list of items. How do you debug?)
    问题 我在将asp.net绑定到dropdownlist时遇到问题,并且对如何调试一无所知。 我检查了有关此堆栈的其他问题,但没有任何帮助。 据我所知,应该在列表中选择“名称”。 <asp:DropDownList ID="dd1" runat="server" DataSourceID="ADataSource" DataTextField="Name" DataValueField="Name" SelectedValue='<%# Bind("Name") %>' Width="255" AppendDataBoundItems="true" TabIndex="3" Font-Size="small" EnableViewState="true" > <asp:ListItem Text="Select" Value="" /> </asp:DropDownList> 以下是错误 用户代码未处理System.ArgumentOutOfRangeException,Message ='dd1'具有一个SelectedValue,该值无效,因为它不存在于项目列表中。 参数名称:值Source = System.Web ParamName =值StackTrace:在System.Web.UI.WebControls.ListControl.OnDataBinding
  • Excel-VBA:在 .aspx 网页上抓取数据之前的按钮和下拉列表(Excel-VBA: buttons and drop-down lists before scraping data on .aspx web pages)
    问题 我想使用 VBA 从网页中获取表格,但我无法直接访问它,因为我需要从一个选项卡切换到另一个选项卡。 问题依赖于网页的 .aspx 结尾(URL 不会相应地演变)。 网址:http://www.morningstar.fr/fr/fundquickrank/default.aspx 点击 URL 后的默认页面 移动到“长期”选项卡 - URL 不会改变 我设法构建了用于将表导出到 Excel 工作表的代码,但缺少“导航”部分。 这是关于单击“长期选项卡”按钮的 HTML 代码: HTML 代码长期标签 我的起点在这里(ProcessHTMLPage 进行表格抓取): Sub Browse_Morningstar() Dim XMLPage As New MSXML2.XMLHTTP60 Dim HTMLDoc As New MSHTML.HTMLDocument XMLPage.Open "GET", "http://www.morningstar.fr/fr/fundquickrank/default.aspx", False XMLPage.send HTMLDoc.body.innerHTML = XMLPage.responseText ProcessHTMLPage HTMLDoc End Sub 我想必须以某种方式更新请求。 对不起,如果我不够准确
  • 如何将MemoryStream绑定到asp:image控件?(How to bind a MemoryStream to asp:image control?)
    问题 有没有办法将MemoryStream绑定到asp:image控件? 回答1 处理程序可以像其他任何请求一样接受url参数。 因此,不是将您的<asp:image/>到image.ashx而是将其设置为image.ashx?ImageID=[Your image ID here] 。 回答2 最好的选择是创建一个将返回图像的HttpHandler。 然后将asp:Image上的ImageUrl属性绑定到HttpHandler的URL。 这是一些代码。 首先创建HttpHandler: <%@ WebHandler Language="C#" Class="ImageHandler" %> using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Web; public class ImageHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.Clear(); if (!String.IsNullOrEmpty(context.Request.QueryString["id"])) { int id = Int32.Parse(context
  • 如何将哈希表绑定到下拉列表?(How can a hashtable be bound to a drop down list?)
    问题 在 vb.net/winforms 中,如何将哈希表绑定到下拉列表或任何其他数据源驱动的控件? 回答1 这是winforms、wpf还是asp.net? [更新:啊……winforms ;-p] winforms 希望数据是IList (或者,间接地,通过IListSource ) - 所以我猜(从评论中)你正在使用 winforms。 内置的类似字典的集合都没有实现IList ,但老实说这并不重要:如果您是数据绑定,则数量可能相当小,因此常规列表应该没问题。 最好的选择是类似于List<T>或BindingList<T> ,其中T具有您想要绑定到的所有属性。 这是一个选项吗? 如果您坚持使用 1.1(因为您提到HashTable而不是Dictionary<,> ),请使用ArrayList 。 示例(在 C# 中): class MyData { public int Key { get; set; } public string Text { get; set; } } [STAThread] static void Main() { var data = new List<MyData> { new MyData { Key = 1, Text = "abc"}, new MyData { Key = 2, Text = "def"}, new MyData { Key
  • 如何使 DropDownList 控件以粗体 ASP.NET 显示某些项目(How to make a DropDownList control display some items in bold ASP.NET)
    问题 我正在使用 ASP.Net 中的自定义 DropDownList 控件,并且有一个请求以粗体字体显示列表中的某些项目(注意 - 该控件继承自 CompositeDataBoundControl 因此它可以是数据绑定......而不是 DropDownListBox)。 该控件绑定到一个表,并且该表中有一个名为 IsUsed 的列 - 如果将其设置为 true,则列表中的相应项目应呈现为粗体。 (这里应该注意,这只能在 FireFox 中查看。) 我的经验都在中间\后端层,所以表示层对我来说很新 - 有人可以指出我正确的方向吗? 我最初的想法是,在自定义控件中的某个地方,我可以访问从数据源返回的所有行,我可以循环遍历这些行,但我不确定这是否可行......还有我可以覆盖的 RenderContents ...看起来很有趣! 回答1 这是如何在代码隐藏中执行您需要的操作: var item = new ListItem("MyItem"); item.Attributes.Add("style", "font-weight: bold"); var list = FindControl("DropDownList1"); list.Items.Add(item); 从继承的任何控制System.Web.UI.Control具有财产Attributes
  • asp.net 应用程序中缺少动态控件回发事件的动态控件(Dynamic controls missing in asp.net application on postback event of dynamic control)
    问题 嗨,我正在按钮单击事件上添加动态控件,因为我有下拉控件,我正在为选定的索引更改引发一个下拉事件,我将自动回发设为 true,当我从下拉列表中选择新项目时我失去了所有的动态控制 回答1 每个继承IPostBackDataHandler接口的服务器控件都有一个LoadPostData方法来处理回发数据。 当控件由类(页面、表单、占位符、控件等)实现时,该类调用LoadPostData方法并传递发布的数据和键以维护控件状态。 您需要做的就是在回发期间每次在页面加载事件之前或之内重新实例化/重新初始化动态控件,并将此控件添加到页面/表单/占位符。 然后通过父控件调用 LoadPostData 方法将发布的数据自动分配给控件,并触发控件事件。 查看文章以及如何编写动态控件的代码 -如何在asp.net 中回发期间维护动态控件事件、数据 回答2 您必须在每次回发时(最迟在加载事件中)重新创建所有动态创建的控件。 您还必须确保它们获得与之前相同的 ID 以触发事件并维护 ViewState。 如果您知道要创建的控件数量(可以存储在ViewState ),您可以通过将其附加到控件 ID 来从计数器变量中导出 ID。 然后您可以在页面的init事件中使用正确的 ID 重新创建它们。 推荐阅读: 真正了解动态控制页面生命周期 或者您使用内置的数据绑定控件之一,如自动执行此操作的中继器。
  • 如何将值绑定到asp.net mvc 中的下拉列表?(How to bind value to dropdownlist in asp.net mvc?)
    问题 我有几个文本框和一个下拉列表,例如: for (int i = 0; i < count; i++) { <tr> <td>@Html.DropDownListFor(m => m.GetTimeSheetDetails[i].PROJ_ID, (SelectList)ViewBag.ProjectList, "-- Choose a Project --", new { @id = "ddlProjectvalue" }) </td> <td>@Html.TextBoxFor(m => m.GetTimeSheetDetails[i].SUN_HRS, new { style = "width:50px; height:30px;", @class = "sunhrs" }) </td> <td>@Html.TextBoxFor(m => m.GetTimeSheetDetails[i].MON_HRS, new { style = "width:50px; height:30px;", @class = "monhrs" }) </td> <td>@Html.TextBoxFor(m => m.GetTimeSheetDetails[i].TUE_HRS, new { style = "width:50px; height:30px;", @class = "tuehrs
  • 如何使用 jQuery 将 JSON 数据绑定到 Asp.net MVC 中的下拉列表(How to bind JSON data to dropdownlist in Asp.net MVC using jQuery)
    问题 我正在尝试将 JSON 数据绑定到下拉列表 我的场景是我想获取数据并绑定到动态下拉列表, 在单独的类中,我使用 linq 来获取数据,例如 public SelectList getProjects() { IEnumerable<SelectListItem> projectslist = (from proj in res.PROJECTs where proj.IS_DELETED == "N" select proj).AsEnumerable().Select(projt => new SelectListItem() { Text = projt.NAME, Value = projt.ID.ToString() }); return new SelectList(projectslist, "Value", "Text", PROJ_ID); } 在控制器中: ViewBag.ProjectList=(from proj in res.PROJECTs where proj.IS_DELETED == "N" select proj).AsEnumerable().Select(projt => new SelectListItem() { Text = projt.NAME, Value = projt.ID.ToString() }); 在视图中: @for