asp.net是否存在带有复选框(webcontrol)的任何好的多选下拉列表?
非常感谢
是否有可能DataBind ASP.NET CheckBoxList,以便数据中的字符串值成为复选框的标签,bool值检查/取消选中该框?
在我的asp.net webform上,我有一个像这样的CheckBoxList:
<asp:CheckBoxList runat="server" ID="chkListRoles" DataTextField="UserName" DataValueField="InRole" />
Run Code Online (Sandbox Code Playgroud)
在后面的代码我有这个代码:
var usersInRole = new List<UserInRole>
{
new UserInRole { UserName = "Frank", InRole = false},
new UserInRole{UserName = "Linda", InRole = true},
new UserInRole{UserName = "James", InRole = true},
};
chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();
Run Code Online (Sandbox Code Playgroud)
我有点希望在InRole = true时检查复选框.我也试过InRole ="Checked".结果是一样的.我似乎无法找到DataBind的方法,并自动选中/取消选中复选框.
目前,我通过为DataBound事件中的相应项设置selected = true来解决问题.似乎有一个更清晰的解决方案,超出我的掌握.
谢谢
我有一个我正在尝试优化的Web应用程序.某些控件隐藏在对话框样式中DIVs
.所以,我希望只有当用户想要看到它们时才通过AJAX加载它们.这对于大多数基于文字的控件(各种菜单和小部件)来说都很好,但是当我拥有所谓的"脏"控件时 - 那些写入大量信息的控件ViewState
,在页面上放置大量的CSS或脚本,需要很多引用等 - 这些似乎不可能"移出页面",特别是考虑到ASP.NET将如何对回发做出反应.
我正在考虑某种步骤,我覆盖渲染,找到我要移出的位的标记,并将AJAX占位符放在那里,但不仅服务器开销看起来极端,它也感觉像一个完整的黑客.此外,这里的关键因素是包含在它们与验证控件形式的对话框,我无法想象我会怎样移动的控制和他们所需要的脚本.
在我狂热的想象中,我想这样做:
AJAXifier.AJAXify(ctlEditForm);
Run Code Online (Sandbox Code Playgroud)
可悲的是,我知道这是一个梦想.
如何在不造成服务器过多负载的情况下真正接近快速简便的AJAX化?
我最近学会了编写自己的WebControls,但是我仍然对Render和RenderControl之间的差异感到朦胧.我开始使用Render,但在某些时候我开始使用RenderControl,我现在只使用它.如果我养成了一个坏习惯,我想在我按照自己的方式设定之前把它扼杀在萌芽状态.
当使用ASP.NET CheckBox
(并且在外部情况下,继承自a CheckBox
)时,它会在复选框输入控件周围呈现一个范围,此跨度控件正在影响jQuery脚本.
渲染时是否可以删除此跨度?
考虑开发一个Web控件(ASP.NET).你真正想做的是以非常好的方式设计和开发这个控件,这是一个非常好的方法(这是我想要做的,在这个问题中我将解释为什么我不能这样做) .
1)我在一个名为的单独文件夹中创建我的控件,WebControls
并将其命名为(例如)MyWebControl
.我会有这些文件:MyWebControl.ascx
和MyWebControl.ascx.cs
.
2)鉴于我的控件是一个复杂的控件,我将一个样式和一个动态客户端行为引用,在控件html中,调用一个css样式表MyWebControl.ascx.css
和一个调用的javascript文件MyWebControl.ascx.js
.
3)在我的控制下,我做了以下事情:
<%@ Control Language="C#"
AutoEventWireup="true"
CodeFile="MyWebControl.ascx.cs"
Inherits="MyApp.WebControls.MyWebControl" %>
<link href="MyWebControl.ascx.css" rel="stylesheet" type="text/css" />
<script src="MyWebControl.ascx.js" type="text/javascript"></script>
<div>
...
</div>
Run Code Online (Sandbox Code Playgroud)
就是这个!
好吧,这个问题有一个问题:当我的控件被渲染,并且在一个页面中有多个这个控件时,我得到了重复的css和js文件的链接,甚至不止一次重复.
如何在我的控件中链接外部样式表/ javascript文件,而不会发生这种不好的事情?
好的,看了一下,在社区其他人的帮助下,我能理解这Page.ClientScript
就是救援的目的.
但是,要注册的脚本有很多功能......你能说出它们之间的区别吗?
1) Page.ClientScript.IsClientScriptBlockRegistered
2) Page.ClientScript.IsClientScriptIncludeRegistered
3) Page.ClientScript.IsOnSubmitStatementRegistered
4) Page.ClientScript.IsStartupScriptRegistered
和相应的设置方法?
1) Page.ClientScript.RegisterClientScriptBlock
2) Page.ClientScript.RegisterClientScriptInclude
3) Page.ClientScript.RegisterOnSubmitStatement
4) Page.ClientScript.RegisterStartupScript
此外:这可以应用于JavaScript和CSS吗?
谢谢
The base class includes the field 'lbl', but its type (web.App_Code.CustomLabelControl) is not compatible with the type of control (web.App_Code.CustomLabelControl).
我以同样的方式做了很多自定义控件,但地狱这个错误让我疯了.我有一个Web应用程序项目,App_Code
目录中的下面的类是web.config中的tagprefix引用,用于类中的控件.现在我该怎么做?
<system.web>
<pages>
<controls>
<add namespace="web.App_Code" tagPrefix="CControls"/>...
Run Code Online (Sandbox Code Playgroud)
<form id="form1" runat="server">
<div>
<CControls:CustomLabelControl runat="server" OnClickText="Welcome" ID="lbl">
</CControls:CustomLabelControl>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
namespace web.App_Code
{
public class CustomLabelControl : Control, IPostBackEventHandler, IPostBackDataHandler
{
private string _onClickText;
public CustomLabelControl()
{
}
public string OnClickText
{
get { return _onClickText; }
set { _onClickText = value; }
}
public void …
Run Code Online (Sandbox Code Playgroud) 我想在asp.net webfoms中使用jQuery.我是否需要获得一个特殊的工具包,以便.net控件吐出友好的控件ID?
原因是,我不想写javascript引用我的HTML ID,如control_123_asdfcontrol_234.
这是否已在3.5版中解决?(我记得读过你必须得到一些让ID友好的特殊dll).
我很好奇为什么只有一些System.Web.UI.WebControl
控件在具有相同的接口属性时实现某些接口.
例如,有很多控件具有Text属性,但只有以下工具ITextControl
:
(TextBox和ListControl实际上实现了IEditableTextControl,它实现了ITextControl)
TableCell,Button,HyperLink等不是这样我必须编写这样的代码
ITextControl textControl = control as ITextControl;
TableCell tableCell = control as TableCell;
if (textControl != null)
{
textControl.Text = value;
}
else if (tableCell != null)
{
tableCell.Text = value;
}
Run Code Online (Sandbox Code Playgroud)
而不是这个
control.Text = value;
Run Code Online (Sandbox Code Playgroud)
这是设计决定还是疏忽?
在我看来,使用HtmlTextWriter渲染HTML并不是非常直观,但如果您在Web表单中实现Web控件,那么您必须使用它.我认为有可能为此创建一个流畅的界面,它更像是它输出的HTML.我想知道人们对我到目前为止提出的语法的看法.
public void Render(HtmlTextWriter writer)
{
writer
.Tag(HtmlTextWriterTag.Div, e => e[HtmlTextWriterAttribute.Id, "id"][HtmlTextWriterAttribute.Name,"name"][HtmlTextWriterAttribute.Class,"class"])
.Tag(HtmlTextWriterTag.Span)
.Text("Lorem")
.EndTag()
.Tag(HtmlTextWriterTag.Span)
.Text("ipsum")
.EndTag()
.EndTag();
}
Run Code Online (Sandbox Code Playgroud)
"Tag","Text"和"EndTag"是HtmlTextWriter类的扩展方法,它返回它所接受的实例,以便可以链接调用.传递给第一次调用"Tag"时使用的重载中使用的lambda的参数是一个"HtmlAttributeManager",它是一个简单的类,它包装一个HtmlTextWriter来提供一个索引器,它接受一个HtmlTextWriterAttribute和一个字符串值并返回实例所以这些电话可以被链接.我也有这个类的方法用于最常见的属性,例如"Name","Class"和"Id",这样你就可以编写上面的第一个调用,如下所示:
.Tag(HtmlTextWriterTag.Div, e => e.Id("id").Name("name").Class("class"))
Run Code Online (Sandbox Code Playgroud)
一个更长的例子:
public void Render(HtmlTextWriter writer)
{
writer
.Tag(HtmlTextWriterTag.Div, a => a.Class("someClass", "someOtherClass"))
.Tag(HtmlTextWriterTag.H1).Text("Lorem").EndTag()
.Tag(HtmlTextWriterTag.Select, t => t.Id("fooSelect").Name("fooSelect").Class("selectClass"))
.Tag(HtmlTextWriterTag.Option, t => t[HtmlTextWriterAttribute.Value, "1"][HtmlTextWriterAttribute.Title, "Selects the number 1."])
.Text("1")
.EndTag(HtmlTextWriterTag.Option)
.Tag(HtmlTextWriterTag.Option, t => t[HtmlTextWriterAttribute.Value, "2"][HtmlTextWriterAttribute.Title, "Selects the number 2."])
.Text("2")
.EndTag(HtmlTextWriterTag.Option)
.Tag(HtmlTextWriterTag.Option, t => t[HtmlTextWriterAttribute.Value, "3"][HtmlTextWriterAttribute.Title, "Selects the number 3."])
.Text("3")
.EndTag(HtmlTextWriterTag.Option)
.EndTag(HtmlTextWriterTag.Select)
.EndTag(HtmlTextWriterTag.Div);
}
Run Code Online (Sandbox Code Playgroud)
希望你能够"破译"这个片段输出的HTML,至少这个想法.
请给我任何关于如何改进语法的想法,可能是更好的方法名称,也许是其他一些方法. …
web-controls ×10
asp.net ×9
c# ×4
html ×2
render ×2
.net ×1
ajax ×1
app-code ×1
javascript ×1
jquery ×1
postback ×1
stylesheet ×1