Как использовать DataGridView в .NET 3.5? - PullRequest
0 голосов
/ 02 июня 2009

Я пытаюсь создать форму ввода данных о сотруднике, которая выглядит следующим образом:

Employee Form
-----------------------------------------------
---------------------------------------       |
|           |  Name       |           |       |
|  Picture  |  Department |           |       |
|           |  Position   |           |       |
|           |  DOB        |           |       |
---------------------------------------       |
... repeat for every employee                 |
...                                           |
---------------------------------------       |
|           |  Name       |           |       |
|  Picture  |  Department |           |       |
|           |  Position   |           |       |
|           |  DOB        |           |       |
---------------------------------------       |
-----------------------------------------------

Это очень легко построить с помощью Microsoft Access, но как я могу построить это с помощью Winforms + C # + .NET 3.5?
Я пытался использовать DataGridView, но не смог сделать его похожим на мой пример выше.

Ответы [ 4 ]

1 голос
/ 02 июня 2009

Хорошо. Я наконец дома с моим ноутбуком. Итак, что я сделал, чтобы сделать то же самое, что вы хотели сделать, - я использовал ListView, который я заполняю динамически из таблицы данных. Вот код (краткое описание того, что я делаю, как показано внизу после кода):

 For i = 0 To frmSelection.MechDataTable2.Rows.Count - 1
            Dim tmpGroup As ListViewGroup = New ListViewGroup(frmSelection.MechDataTable2.Rows(i).Item("MechName"))
            ltvMechs.Groups.Add(tmpGroup)
            Dim tmpListItem1 As ListViewItem = New ListViewItem(tmpGroup)
            Dim tmpListItem2 As ListViewItem = New ListViewItem(tmpGroup)
            Dim tmpListItem3 As ListViewItem = New ListViewItem(tmpGroup)
            Dim tmpListItem4 As ListViewItem = New ListViewItem(tmpGroup)
            Dim tmpListItem5 As ListViewItem = New ListViewItem(tmpGroup)

            'row1
            tmpListItem1.SubItems.Add("co1")
            tmpListItem1.SubItems.Add("co2")
            tmpListItem1.SubItems.Add("co3")
            tmpListItem1.SubItems.Add("co4")
            tmpListItem1.SubItems.Add("co5")
            tmpListItem1.SubItems.Add("co6")
            tmpListItem1.SubItems.Add("co7")

            tmpListItem1.SubItems(0).Text = "Select"
            tmpListItem1.SubItems(1).Text = frmSelection.MechDataTable2.Rows(i).Item("Price")
            tmpListItem1.SubItems(2).Text = frmSelection.MechDataTable2.Rows(i).Item("MechID")
            tmpListItem1.SubItems(3).Text = "Faction Orientation"
            tmpListItem1.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("FactionOrientation")
            tmpListItem1.SubItems(5).Text = "Engine HDP"
            tmpListItem1.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("EngineHardPoint")


            'row2
            tmpListItem2.SubItems.Add("co1")
            tmpListItem2.SubItems.Add("co2")
            tmpListItem2.SubItems.Add("co3")
            tmpListItem2.SubItems.Add("co4")
            tmpListItem2.SubItems.Add("co5")
            tmpListItem2.SubItems.Add("co6")
            tmpListItem2.SubItems.Add("co7")

            tmpListItem2.SubItems(0).Text = ""
            tmpListItem2.SubItems(1).Text = ""
            tmpListItem2.SubItems(2).Text = ""
            tmpListItem2.SubItems(3).Text = "Required Rep"
            tmpListItem2.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("RequiredRep")
            tmpListItem2.SubItems(5).Text = "Generator HDP"
            tmpListItem2.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("GeneratorHardPoint")


            'row3
            tmpListItem3.SubItems.Add("co1")
            tmpListItem3.SubItems.Add("co2")
            tmpListItem3.SubItems.Add("co3")
            tmpListItem3.SubItems.Add("co4")
            tmpListItem3.SubItems.Add("co5")
            tmpListItem3.SubItems.Add("co6")
            tmpListItem3.SubItems.Add("co7")

            tmpListItem3.SubItems(0).Text = ""
            tmpListItem3.SubItems(1).Text = ""
            tmpListItem3.SubItems(2).Text = ""
            tmpListItem3.SubItems(3).Text = "Resilience"
            tmpListItem3.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("Resilience")
            tmpListItem3.SubItems(5).Text = "Heavy HDP"
            tmpListItem3.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("HeavyHardPoint")


            'row4
            tmpListItem4.SubItems.Add("co1")
            tmpListItem4.SubItems.Add("co2")
            tmpListItem4.SubItems.Add("co3")
            tmpListItem4.SubItems.Add("co4")
            tmpListItem4.SubItems.Add("co5")
            tmpListItem4.SubItems.Add("co6")
            tmpListItem4.SubItems.Add("co7")

            tmpListItem4.SubItems(0).Text = ""
            tmpListItem4.SubItems(1).Text = ""
            tmpListItem4.SubItems(2).Text = ""
            tmpListItem4.SubItems(3).Text = "Weight"
            tmpListItem4.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("Weight")
            tmpListItem4.SubItems(5).Text = "Medium HDP"
            tmpListItem4.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("MediumHardPoint")


            'row5
            tmpListItem5.SubItems.Add("co1")
            tmpListItem5.SubItems.Add("co2")
            tmpListItem5.SubItems.Add("co3")
            tmpListItem5.SubItems.Add("co4")
            tmpListItem5.SubItems.Add("co5")
            tmpListItem5.SubItems.Add("co6")
            tmpListItem5.SubItems.Add("co7")

            tmpListItem5.SubItems(0).Text = ""
            tmpListItem5.SubItems(1).Text = ""
            tmpListItem5.SubItems(2).Text = ""
            tmpListItem5.SubItems(3).Text = "Structure"
            tmpListItem5.SubItems(4).Text = frmSelection.MechDataTable2.Rows(i).Item("Class")
            tmpListItem5.SubItems(5).Text = "Light HDP"
            tmpListItem5.SubItems(6).Text = frmSelection.MechDataTable2.Rows(i).Item("LightHardPoint")


            ltvMechs.Items.Add(tmpListItem1)
            ltvMechs.Items.Add(tmpListItem2)
            ltvMechs.Items.Add(tmpListItem3)
            ltvMechs.Items.Add(tmpListItem4)
            ltvMechs.Items.Add(tmpListItem5)
        Next

По сути, каждый элемент списка - это строка в группе, каждый подэлемент - это ячейка в строке (аналогично тому, что вы увидите в excel, access ect.), Подэлемент (0) находится в col1, подэлемент (1) - в сб. Для вашего первого столбца у вас будет подпункт (0) listItem1, который будет изображением, а все остальные подпункты (0) вы захотите сделать пустыми. Как я уже сказал в своем комментарии выше, я написал это на vb.net, но, судя по всему, он не сильно отличается от C #. Также вот изображение части того, что производит этот код. извините за качество, но это лучшее, что я мог сделать с тем, с чем мне приходилось работать. альтернативный текст http://img268.imageshack.us/img268/7977/listviewexample.png

0 голосов
/ 02 июня 2009

Сначала получите BindingListView . Затем, вместо использования DataTables / Sets, вы можете связать List s с DataGridViews. Затем вы можете установить для свойства DataPropertyName второго столбца свойство «Подробности», например:

public string Details 
{ 
    get 
    { 
        return string.Format("{0}\n{1}\n{2}\n{3}", Name, Department, Position, DOB); 
    } 
} 
0 голосов
/ 02 июня 2009

Попробуйте создать собственный элемент управления, который содержит все данные для одного сотрудника, а затем добавить несколько экземпляров этого элемента управления в FlowLayoutPanel или что-то подобное. Ваш пользовательский элемент управления может быть простым с помощью разделенной панели, содержащей PictureBox и некоторые TextBoxes.

0 голосов
/ 02 июня 2009

Почему бы вам не попробовать привязать ваши данные к повторителю?

<asp:Repeater ID="Repeater1" runat="server">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td rowspan="4">
                <%# Eval("Picture") %>
            </td>
            <td>
                <%# Eval("Name") %>
            </td>
        </tr>
        <tr>
            <td>
                <%# Eval("Department") %>
            </td>
        </tr>
        <tr>
            <td>
                <%# Eval("Position") %>
            </td>
        </tr>
        <tr>
            <td>
                <%# Eval("DOB") %>
            </td>
        </tr>
    </tr>
</ItemTemplate>
<FooterTemplate>
    </table></FooterTemplate>
</asp:Repeater>
...