下面定义的Textblock显示窗口首次加载时,因为它没有Datacontext(因此转换器代码没有运行),直到从另一个控件(例如TreeView)中选择了一个项目.
<TextBlock
Name="tbkDocumentNotFound"
Style="{StaticResource StandardText}"
Margin="4,4,2,0"
TextWrapping="Wrap"
Visibility="{Binding Path=IsDownloaded, Converter={StaticResource docNotFoundVisibilityConverter}, Mode=TwoWay}"
Text="The document could not be found.">
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
那么当没有DataContext时如何阻止它出现呢?
谢谢.
我有一个数据对象的选项列表,我想使用一个单选按钮列表,以允许用户选择一个,只有一个.功能类似于数据绑定组合框,但采用单选按钮格式.
愚蠢的我,我以为这将是内置的,但没有.你怎么做呢?
我有一个asp:GridView,它在TemplateField中包含一个asp:TextBox.我想获取它在javascript中使用的ID.像这样的东西:
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="textDateSent" runat="server" />
<input type="button" value='Today'
onclick="setToday('<%# textDateSent.ClientID %>');" />
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
但是当我编译时,我收到一个错误:
当前上下文中不存在名称"textDateSent"
有谁知道如何获取此TextBox的客户端ID?
我正在设置ASP.NET转发器的DataSource,如下所示:
rptTargets.DataSource = from t in DB.SalesTargets select new { t.Target, t.SalesRep.RepName };
Run Code Online (Sandbox Code Playgroud)
现在,在转发器的OnDataBound事件中,如何从e.Item.DataItem中包含的匿名类型中检索RepName和Target属性?
非常感谢
我正在尝试动态创建GridView.其中一列是创建行的用户.
JobDebrief jd = new JobDebrief(JobID);
Job jb = new Job(JobID);
DataGrid db = JobClass.Job_Piece.BuildGrid();
db.Columns.Add(CreateBoundColumn(jd.DbriefedByUser, "User"));
PlaceHolder.Controls.Add(db);
db.DataSource = jb.Pieces;
db.DataBind();
Run Code Online (Sandbox Code Playgroud)
我在job_piece类中的BuildGrid函数中创建了GridView.
public static DataGrid BuildGrid()
{
DataGrid NewDg = new DataGrid();
NewDg.DataKeyField = "ID";
NewDg.AutoGenerateColumns = false;
NewDg.CssClass = "tblResults";
NewDg.HeaderStyle.CssClass = "tblResultsHeader";
NewDg.AlternatingItemStyle.CssClass = "ResultsStyleAlt";
NewDg.ItemStyle.CssClass = "ResultsStyle";
NewDg.Columns.Add(Load.CreateBoundColumn("AdvisedQty", "Qty Advised"));
NewDg.Columns.Add(Load.CreateBoundColumn("PieceTypeString", "Piece Type"));
NewDg.Columns.Add(Load.CreateBoundColumn("ReceivedQty", "Rcvd Qty"));
NewDg.Width = Unit.Percentage(100.00);
return NewDg;
}
public static BoundColumn CreateBoundColumn(string DataField, string Header,string CssClass ="",bool Highlight = false)
{
BoundColumn …
Run Code Online (Sandbox Code Playgroud) 我有一个List 的.NET repeater
控件data-bound
.作为Repeater的一部分Item Collection
,我有一个"删除按钮",可以有效地删除当前的List元素.
这工作,在代码隐藏我可以成功地从删除项目datasource
的的中继器.
我的问题是这样的:当我重置更新datasource
并MyRepeater.DataBind()
再次调用时,Repeater接口不刷新而删除了Item.
我正在寻找事件基本上重新绘制或刷新基于更新列表的Repeater.感谢您的任何指示或示例.
我在asp.net 2.0中有一个带有行选择链接的数据绑定GridView.当选择一行时,我想以编程方式在所选行下面添加一个表行,以嵌套另一个网格等.
我正在为客户和一篇文章研究这个问题,我认为今晚我的google-fu并不强大.有什么建议?
编辑:我实际上有一个工作的解决方案,但Visual Studio以某种方式被搞砸了; 关闭并重新开放VS并重建一切修复问题;-)
我的解决方案发布在下面,请告诉我如何做到更好.谢谢!
我有一个asp.net dropDownList,它自动绑定到sqlDataSource到页面加载时客户端类型的值.在页面加载时,我也在创建一个Client对象,其中一个属性是ClientType.我试图根据Client对象的ClientType属性的值设置ddl的SelectedValue失败.我收到以下错误消息"System.ArgumentOutOfRangeException:'ddlClientType'具有一个无效的SelectedValue,因为它不存在于项列表中".我知道这是因为当我尝试设置所选值时,列表尚未填充.有没有办法克服这个问题?谢谢!
我有FormView
我的页面标记:
<asp:FormView ruanat="server" ID="FormView1" DataSourceID="SqlDataSource1" OnDataBinding="FormView1_DataBinding" OnDataBound="FormView1_DataBound">
<InsertItemTemplate>
<uc:UserControl1 runat="server" ID="ucUserControl1" />
</InsertItemTemplate>
</asp:FormView>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" SelectCommand="EXEC someSP" />
Run Code Online (Sandbox Code Playgroud)
它是代码隐藏的WAS:
protected void FormView1_DataBound(object sender, EventArgs e)
{
var c = FormView1.FindControl("ucUserControl1"); // returns null
}
Run Code Online (Sandbox Code Playgroud)
BECAME:
protected void FormView1_DataBinding(object sender, EventArgs e)
{
FormView1.ChangeMode(FormViewMode.Insert);
}
protected void FormView1_DataBound(object sender, EventArgs e)
{
if (FormView1.CurrentMode = FormViewMode.Insert)
{
var c = FormView1.FindControl("ucUserControl1"); // returns null no more!
}
}
Run Code Online (Sandbox Code Playgroud)
从理论上讲,我能够FormView
在数据绑定后找到控制权.但我不是.为什么?
我有一个数据绑定的组合框。在这个列表中,我需要一个分隔符。由于这是数据绑定,我做了一些与这篇文章非常相似的事情。我的数据库返回列表,包括一个 '-' 来标记分隔符需要去的地方,数据触发器使它成为一个分隔符。
<ComboBox Name="cbAction" Grid.Column="1" Grid.Row="0" Margin="5,2,5,2" DisplayMemberPath="Description" SelectedValuePath="Code" SelectionChanged="cbAction_SelectionChanged">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Code}" Value="-">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
除了我在这里遇到的问题和一个小设计问题(我将在另一个问题中提出)之外,这大部分工作正常。
使用鼠标时,用户无法选择分隔符,这是正确的。但是如果用户使用向上/向下箭头选择项目,他们可以选择分隔符。这不是默认行为,它会跳过分隔符。
如果您的 XAML 具有各种 ComboBoxItems 和一个 Separator 项(使用向上和向下键时跳过分隔符),我如何使此分隔符的行为类似于它的行为方式
databound ×10
asp.net ×6
c# ×3
gridview ×3
wpf ×3
.net ×2
repeater ×2
combobox ×1
data-binding ×1
datasource ×1
default ×1
findcontrol ×1
formview ×1
javascript ×1
radio-button ×1
refresh ×1
textblock ×1
visibility ×1