- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
188 点
400 个帖子
带有下拉列表的动态 Formview 非常失败。
6 小时 21 分钟前|LINK
我脑子里有一个想法,我正在努力实现它,但它没有用。这是需要发生的事情:用户从列表中选择一个项目。根据选择动态构建窗体 View 。表单 View 需要是动态的,因为查询将返回一个数据集,其中包含非空值中的空值,例如:
4600, 1, 4, NULL, NULL, 68 ....
“4600”是型号,其他所有内容都是与组件对应的 ID。 Null 值表示此字段不属于 4600。
从今以后,将构建表单 View ,以便将“4600”馈送到标签。对于每个非空值,我需要构建一个下拉列表,每个下拉列表都有一个单独的数据源,不是 ODS 的东西,而是对 BLL 类的调用。然后将非空值分配给 ddl 的 selected value 属性。
很简单,不是吗?所以这是代码,它失败得很厉害。实际上只是在无限循环中超时。超时发生在 ddlTonerBlack_DataBinding 方法中。有人可以告诉我我做错了什么吗?谢谢。电工机械
aspx 标记:
<form id="form1" runat="server">
<div>
<asp:DropDownList runat="server" ID="ddlPrinterModels" AppendDataBoundItems="True"
DataTextField="Hardware_Model" DataValueField="Hardware_Model"
width="246px" CssClass="AssetMngnt-smallFont" AutoPostBack="true" >
<asp:ListItem Value="-1" Selected="True">-- Select Printer Model --</asp:ListItem>
</asp:DropDownList>
<hr />
<asp:PlaceHolder id="DetailsViewPlaceHolder" runat="server"/>
</div>
<!-- NOT A COMPLETE QUERY -->
<asp:sqldatasource id="ODSTonerBlackByModel"
selectcommand="SELECT [Hardware_Model], [Ident_Black], [Ident_Cyan], [Ident_Yellow] FROM [cPrinters_Toners] WHERE ([Hardware_Model] = @Hardware_Model)"
connectionstring="<%$ ConnectionStrings:CISF_Asset_Management %>"
runat="server">
<SelectParameters>
<asp:ControlParameter ControlID="ddlPrinterModels" Name="Hardware_Model"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</form>
现在是代码文件:
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadData_PrinterModels();
}
FormView printerModelFormView = new FormView();
dalConsumables_TonerBlack x = new dalConsumables_TonerBlack();
printerModelFormView.ID = "fvPrinterModel";
printerModelFormView.DataSourceID = "ODSTonerBlackByModel";
printerModelFormView.PagerSettings.Mode = PagerButtons.NextPrevious;
printerModelFormView.HeaderText = "Printer Model";
printerModelFormView.ItemTemplate = new FormViewTemplate();
DetailsViewPlaceHolder.Controls.Add(printerModelFormView);
}
protected void LoadData_PrinterModels()
{
Printer_ModelsList x = new Printer_ModelsList();
ddlPrinterModels.DataSource = x.GetPrinetr_Models();
ddlPrinterModels.DataBind();
}
protected void Page_Init(object sender, EventArgs e)
{
SqlDataSource sqlDS = new SqlDataSource();
sqlDS.ConnectionString = ConfigurationManager.ConnectionStrings["CISF_Asset_Management"].ConnectionString;
sqlDS.SelectCommand = "SELECT dbo.cCartridge_Black.Ident_Black, dbo.cCartridge_Black.Model_Black, " +
"dbo.cCartridge_Black.Desc_Black, dbo.cCartridge_Black.Qty_Black, " +
"dbo.cCartridge_Black.Black_Reorder_Limit, dbo.cCartridge_Black.Notes, " +
"dbo.cCartridge_Black.UpdatedBy, dbo.cPrinters_Toners.Hardware_Model " +
"FROM dbo.cCartridge_Black LEFT OUTER JOIN " +
"dbo.cPrinters_Toners ON dbo.cCartridge_Black.Ident_Black " +
"= dbo.cPrinters_Toners.Ident_Black";
form1.Controls.Add(sqlDS);
DropDownList ddl = new DropDownList();
ddl.ID = "ddlTonerBlack";
ddl.DataSource = sqlDS;
ddl.DataTextField = "Model_Black";
ddl.DataValueField = "Ident_Black";
form1.Controls.Add(ddl);
}
}
和模板类:
public class FormViewTemplate : System.Web.UI.ITemplate
{
void System.Web.UI.ITemplate.InstantiateIn(System.Web.UI.Control container)
{
Label lblPrinterModel = new Label();
lblPrinterModel.ID = "lblHardwareModel";
lblPrinterModel.DataBinding += new EventHandler(PrinterModelLabel_DataBinding);
container.Controls.Add(lblPrinterModel);
DropDownList ddlTonerBlack = new DropDownList();
ddlTonerBlack.ID = "ddlTonerBlack";
ddlTonerBlack.DataBinding +=new EventHandler(ddlTonerBlack_DataBinding);
container.Controls.Add(ddlTonerBlack);
}
private void PrinterModelLabel_DataBinding(Object sender, EventArgs e)
{
Label lblPrinterModel = (Label)sender;
FormView formViewContainer = (FormView)lblPrinterModel.NamingContainer;
DataRowView rowView = (DataRowView)formViewContainer.DataItem;
lblPrinterModel.Text = rowView["Hardware_Model"].ToString();
}
private void ddlTonerBlack_DataBinding(Object sender, EventArgs e)
{
DropDownList ddlTonerBlack = (DropDownList)sender;
FormView formViewContainer = (FormView)ddlTonerBlack.NamingContainer;
DataRowView rowView = (DataRowView)formViewContainer.DataItem;
dalConsumables_TonerBlack x = new dalConsumables_TonerBlack();
ddlTonerBlack.DataSource = x.GetListTonersBlack();
ddlTonerBlack.DataBind();
ddlTonerBlack.SelectedValue = rowView["Ident_Black"].ToString();
}
}
最佳答案
你会得到一个无限循环,因为在 ddlTonerBlack_DataBinding 方法中,你在刚刚触发数据绑定(bind)事件的控件上调用了 DataBind 方法。
只需在同一控件的数据绑定(bind)事件处理程序中触发数据绑定(bind)事件,这就是您获得无限循环的原因。
关于c# - 带有下拉列表的动态 Formview 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219346/
我有一个像这样的 FormView: Test Name '> Test Name 这意味着在 InsertMode 中,用户可以使用下拉列表更改 Suite
插入记录后我有一个表单 View 我想知道插入记录的最后一个 id 最佳答案 你必须依赖你的数据源对象。 例如,如果您使用的是 EntityDataSource,则非常简单。 1 catch 事件 E
定义 FormView 派生类时: class PrefsView(FormView): template_name = "prefs.html" form_class = MyFor
我有一个连接到 LinqDataSource 的 FormView,我想按查询字符串对其进行过滤。基本上,如果通过查询字符串传入 ID,我只想显示该记录,否则如果没有提供 ID,则只显示所有记录。我已
我想使用表单 View 显示学生成绩单。如果是第二学期的成绩单,成绩单将有额外的栏目,如果是第三学期的成绩单,则将有另外两栏。要找出它是哪个术语,我需要评估 TermNumber 属性,并显示适当的标
我一整天都在想办法解决这个问题 - 我有一个 FormView带有一些文本字段和 GridView有几列。出于某种原因,我的 FormView不显示,但 GridView 我的 .aspx 文件如下:
我有一个包含窗体 View 和 ObjectDataSource 的 ASP.NET 页面。在页面上,我只有 4 个字段绑定(bind)到我的数据源中的字段。我的数据源包含 10 个字段。当我调用更新
Django FormView 和 CreateView 有什么区别? 我看到的唯一区别是,FormView 需要 ModelForm 但 CreateView 不需要。 否则,两者都会做同样的事情来
我已经做到了,任何使用用户名注册的用户都会自动将其用户名转换为小写。 user/forms.py 我现在遇到一个问题,我无法找到一种方法将登录表单中的用户名在提交时转换为较低的用户名。因为我仍然希望用
我的 Form 中遇到了一些奇怪的故障执行。我不确定这是一些实现错误还是 SwiftUI 本身的错误。 所以基本上我想做的是典型的“ToDo/TimeTracking”应用程序。我想创建一个引用项目实
我有一个使用 FormView 的类 View 。我需要更改表单的名称,即在我的旧函数 View 中以前是这样的: upload_form = ContactUploadForm(request.u
有这个 urls.py 片段: url(r'^storageitem/(?P[\w]+)/addtransaction/$', login_required( StorageItemTrans
ID : CpuName :
我需要在插入新项目后进入编辑模式。 OnItemInserted 方法: protected void fvReport_ItemInserted(Object sender, FormViewIns
在 ItemUpdating 上,我能够检索字段值,但我不能只检索更新的值。 有没有比下面的方法更好的方法? protected void fwHotelDetails_ItemUpdating(Ob
如何从代码后面检查表单 View 是否为空?我试过 DataItemCount ==0 但它似乎不起作用。谢谢 if (FormView_imgBG.DataItemCount == 0)
我需要找到这个 标签位于 FormView 中控制,我需要根据条件删除这个标签,但我无法使用 FormView.FindControl 找到它方法
我通过谷歌搜索,发现很多人都在为这个问题苦苦挣扎,但我仍然没有找到正确的答案。 http://i.stack.imgur.com/15jen.png 我有一个表单 View ,需要检查语言代码是否重复
下面是我的代码。我遇到的问题是我的绑定(bind)文本字段没有按预期将信息发送回 UpdateCommand。如果我将任何 @variables 替换为硬编码文本,则更新会按预期进行。因此,如果我将
188 点 400 个帖子 带有下拉列表的动态 Formview 非常失败。 6 小时 21 分钟前|LINK 我脑子里有一个想法,我正在努力实现它,但它没有用。这是需要发生的事情:用户从列表中选择一
我是一名优秀的程序员,十分优秀!