[英]DataGridView Column binding in WPF
我想設計一個DataGrid
,如下圖所示:
我打算將DataGrid
綁定到類的對象列表。 我正在計划的課程是
class Class1
{
public Int32 Index { get; set; }
public string Colour { get; set; }
public string Location { get; set; }
public string Srno { get; set; }
}
我有個問題。 我想有一個顏色屬性,我可以直接綁定到column2中的DataGrid
的顏色。 但由於我計划將DataGrid
綁定設置為此對象的列表,因此新屬性將被識別為列本身。 我該如何避免? 任何建議。
您可以將AutoGenerateColumns設置為False
並在您的手中負責提供您希望在設置DataSource或DataMember屬性時自動生成列的列列表。
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding SourceCollection}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Index}"/>
<DataGridTextColumn Binding="{Binding Colour}"/>
<DataGridTextColumn Binding="{Binding Location}"/>
<DataGridTextColumn Binding="{Binding Srno}"/>
</DataGrid.Columns>
</DataGrid>
<DataGrid Name="DataGrid1" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Index" Binding="{Binding Path=Index}" />
<DataGridTextColumn Header="Colour" Binding="{Binding Path=Colour}"/>
<DataGridTextColumn Header="Location" Binding="{Binding Path=Location}" />
<DataGridTextColumn Header="Srno" Binding="{Binding Path=Srno}" />
</DataGrid.Columns>
</DataGrid>
如果您設置Datagrid1.ItemsSource = Class1的List,就是這樣做的。
List<Class1> myList = new List<Class1>();
DataGrid1.ItemsSource = myList;
希望這可以幫助。
您希望將Color屬性值替換為可以使用rowdatabound完成的另一個Color Property值。
在您設置Autogenerate Columns =“false”時
列:索引,顏色,位置和SrNo將顯示在Datagrid中
你說你有另一種顏色,它的值應該替換datagrid中的COLOR Column。如果我是正確的你可以通過以下方式做到這一點......
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding SourceCollection}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Index}"/>
<asp:TemplateField HeaderText="Colour" SortExpression="Colour">
<HeaderStyle Wrap="False" />
<ItemStyle Wrap="False" />
<ItemTemplate>
<asp:Label ID="lblColor" Text='<%# Bind("Colour") %>' runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<DataGridTextColumn Binding="{Binding Location}"/>
<DataGridTextColumn Binding="{Binding Srno}"/>
</DataGrid.Columns>
</DataGrid>
VB.net:
Protected Sub GridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView.RowDataBound
If e.Row.RowType = DataControlRowType.Header Or e.Row.RowType = DataControlRowType.DataRow Then
End If
If e.Row.RowType = DataControlRowType.DataRow Then
Dim lblColor1 As Label
lblColor1 = TryCast(e.Row.FindControl("lblColor"), Label)
lblColor1.Text = dtData.Rows(e.row.rowindex).ItemArray(0).tostring() '
' ItemArray Defined the Column Position. here give your Another Colour Column Value
End If
End Sub
c#.net:
protected void GridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header | e.Row.RowType == DataControlRowType.DataRow) {
}
if (e.Row.RowType == DataControlRowType.DataRow) {
Label lblColor1 = default(Label);
lblColor1 = e.Row.FindControl("lblColor") as Label;
lblColor1.Text = dtData.Rows(e.Row.RowIndex).ItemArray(0).tostring();
//
// ItemArray Defined the Column Position. here give your Another Colour Column Value
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.