Объединить несколько столбцов Gridview на основе значений их заголовков, используя C # - PullRequest
0 голосов
/ 03 мая 2019

У меня есть сетка, которая выглядит примерно так: this.

Я пытаюсь объединить несколько столбцов в виде сетки в один столбец на основе значения заголовка.

Я пытаюсь объединить название улицы, город, штат, почтовый индекс под одним значением адреса, чтобы получить значение в виде одного столбца адрес . Это уменьшило бы мой общий номер столбца до 3 в приведенном выше примере с ID, Person и Address. Как я могу сделать это в C #?

Вместо этого я не использую поле BoundField / Template, я читаю из файла Excel, загружаю его данные и связываю его в виде таблицы, поэтому я не знаю, сколько столбцов у меня может быть в каждом прогоне. Я видел много учебных пособий, которые фокусируются на данных Boundfield и используют метод DataBinder.Eval (), чтобы выполнить это, но это не работает для меня.

Моя сетка выглядит просто так:

<asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center"> </asp:GridView>

Мой код в основном использует FileUpload Control для загрузки файла Excel, устанавливая OleDBConnection, создавая новую DataTable и связывая все в GridView1.

Как тогда можно получить их под одним столбцом, используя C #? Любая идея / помощь будет принята с благодарностью.

PS: значения "..." в последней и второй последней строке вида сетки являются другими значениями. Это просто для того, чтобы показать, что могут быть сотни значений.

Ответы [ 3 ]

0 голосов
/ 03 мая 2019

Вы можете использовать метод String.concat, чтобы объединить 4 столбца в 1 столбец, например:

ID:1 Adress:111 east st ; Loneville ;TX;77011

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

string[] adress=person_datagrid.Rows[adress].Cells[number cell].Value.ToString().Split(';');
 string street_name=adress[0];
 string city=adress[1];
 string state=adress[2];
 string Zipcode=adress[3];
0 голосов
/ 03 мая 2019

Вы можете использовать что-то вроде этого: (не проверено).Вы можете использовать StringBuilder для конкатенации текста и проверки на наличие nullorempty строки

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
    TableCell cell = e.Row.Cells[2];
     cell.Text = cell.Text + “ “ + e.Row.Cells[3] + “ “ + e.Row.Cells[4] + “ “ + e.Row.Cells[5];
    cell.ColumnSpan = 4;
    e.Row.Cells[3].Visible = false;
     e.Row.Cells[4].Visible = false;
     e.Row.Cells[5].Visible = false;
}
}
0 голосов
/ 03 мая 2019

Мой код в основном использует FileUpload Control для загрузки файла Excel, создания OleDBConnection, создания нового DataTable и связывания всего в GridView1.

При создании Datatable добавьте новый столбец с именемAddress, foreach Row в Datatable, заполните столбец «Address» нужным значением (используя, например, String.concat (...)).

После этого вы можете редактировать свой код asp, как показано ниже:

<asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center">
<columns>
    <!-- all the fields from the DT you want to show-->
    <asp:BoundField DataField="Id" Visible="true"></asp:BoundField>
    <asp:BoundField DataField="Person" Visible="true"></asp:BoundField>
    <asp:BoundField DataField="Address" Visible="true"></asp:BoundField>
    <asp:BoundField DataField="Other_Column_You_Like_in_dt" Visible="true"></asp:BoundField>
</columns>
</asp:GridView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...