[英]copy listview subitems to variable
我已經在尋找任何解決方案,但找不到。 我已經在幾個網站/論壇中找到了數個討論我的問題的帖子,但是我想要一個非常簡單的解決方案。
while (SQLDataReader.Read())
{
var view = new GridView();
view.Columns.Add(new GridViewColumn { Header = "User", DisplayMemberBinding = new Binding("User") });
view.Columns.Add(new GridViewColumn { Header = "hostNamedb", DisplayMemberBinding = new Binding("hostNamedb") });
view.Columns.Add(new GridViewColumn { Header = "fullName", DisplayMemberBinding = new Binding("fullName") });
view.Columns.Add(new GridViewColumn { Header = "location", DisplayMemberBinding = new Binding("location") });
view.Columns.Add(new GridViewColumn { Header = "department", DisplayMemberBinding = new Binding("department") });
view.Columns.Add(new GridViewColumn { Header = "position", DisplayMemberBinding = new Binding("postion") });
view.Columns.Add(new GridViewColumn { Header = "message", DisplayMemberBinding = new Binding("message") });
view.Columns.Add(new GridViewColumn { Header = "status", DisplayMemberBinding = new Binding("status") });
view.Columns.Add(new GridViewColumn { Header = "ip", DisplayMemberBinding = new Binding("ip") });
ListView2.View = view;
ListView2.Items.Add(new
{
User = SQLDataReader["User"].ToString(),
hostNamedb = SQLDataReader["hostNamedb"].ToString(),
fullName = SQLDataReader["fullName"].ToString(),
location = SQLDataReader["location"].ToString(),
department = SQLDataReader["department"].ToString(),
position = SQLDataReader["position"].ToString(),
message = SQLDataReader["message"].ToString(),
status = SQLDataReader["status"].ToString(),
ip = SQLDataReader["ip"].ToString(),
});
}
userName_click = System.Convert.ToString(ListView2.Items[var2].User.Text.ToString());
hostName_click = System.Convert.ToString(ListView2.Items[var2].hostNamedb.Text.ToString());
fullName_form = System.Convert.ToString(ListView2.Items[var2].SubItems[2].Text.ToString());
location_form = System.Convert.ToString(ListView2.Items[var2].SubItems[3].Text.ToString());
department_form = System.Convert.ToString(ListView2.Items[var2].SubItems[4].Text.ToString());
position_form = System.Convert.ToString(ListView2.Items[var2].SubItems[5].Text.ToString());
message_Form = System.Convert.ToString(ListView2.Items[var2].SubItems[6].Text.ToString());
status_form = System.Convert.ToString(ListView2.Items[var2].SubItems[7].Text.ToString());
id_form = System.Convert.ToString(ListView2.Items[var2].SubItems[8].Text.ToString());
userIP_click = System.Convert.ToString(ListView2.Items[var2].SubItems[9].Text.ToString());
基本上,這里的代碼是這樣工作的:程序將從我的數據庫中獲取數據,然后將它們添加到我的Listview2中。
(此外,有人可以檢查將我添加到listview2的項目是否可以工作嗎?由於我確實必須進行大量重新編碼,因此我現在無法運行該程序。我正在從VB.NET遷移到C#WPF)。
繼續:每個變量,例如userName_click,都將從listview2-row-VAR2中獲取數據,列0到8。
我嘗試用諸如--(新的binding(“ user”))中的User之類的綁定名稱替換subitems [n],但是它不起作用。
順便說一下,這是我在listview2中的XAML代碼。
<ListView x:Name="ListView2" HorizontalAlignment="Left" Height="34" Margin="-10,446,-22,-50" VerticalAlignment="Top" Width="702" Grid.ColumnSpan="3" ClipToBounds="True">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{DynamicResource CustomHeaderStyle}">
<l:FixedWidthColumn Header="username" DisplayMemberBinding="{Binding User}" FixedWidth="65"/>
<l:FixedWidthColumn Header="Host Name" DisplayMemberBinding="{Binding hostNamedb}" FixedWidth="65"/>
<l:FixedWidthColumn Header="fullname" DisplayMemberBinding="{Binding fullName}" FixedWidth="85"/>
<l:FixedWidthColumn Header="location" DisplayMemberBinding="{Binding location}" FixedWidth="65"/>
<l:FixedWidthColumn Header="department" DisplayMemberBinding="{Binding department}" FixedWidth="65"/>
<l:FixedWidthColumn Header="position" DisplayMemberBinding="{Binding position}" FixedWidth="65"/>
<l:FixedWidthColumn Header="message" DisplayMemberBinding="{Binding message}" FixedWidth="65"/>
<l:FixedWidthColumn Header="status" DisplayMemberBinding="{Binding status}" FixedWidth="65"/>
<l:FixedWidthColumn Header="id" DisplayMemberBinding="{Binding id}" FixedWidth="65"/>
<l:FixedWidthColumn Header="ip" DisplayMemberBinding="{Binding ip}" FixedWidth="65"/>
</GridView>
</ListView.View>
</ListView>
您的解決方案沒有遵循,但是既然您知道綁定,我想您已經知道了。 我不能幫助您使現有代碼正常工作,而是建議以下內容:使用可觀察的集合來保存具有用戶,主機名數據庫等字段的DB對象。
public DbEntry(){
user = SQLDataReader["User"].ToString();
hostNamedb = SQLDataReader["hostNamedb"].ToString();
fullName = SQLDataReader["fullName"].ToString();
location = SQLDataReader["location"].ToString();
...
}
這些將填充您可觀察的集合。 接下來,您通過XAML中的ItemsSource綁定到該集合。
<ListView ItemsSource="{Binding DBObjectsCollection}">
現在,用數據填充變量僅是指定要從中獲取數據的“行”的索引,並獲取正確的字段或屬性的問題,例如
userName_click = DBObjectsCollection[2].user;
請注意,此代碼將不起作用。 這僅是成為如何解決WPF問題的基本指針。 關於WPF的信息已經很多,但如有任何疑問,請隨時提出問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.