Member 13952925 Ответов: 1

В gridview я хочу привязать данные к текстовому полю. Как мне это сделать?


У меня есть текстовое поле в моем GridView. Я хочу связать это текстовое поле с необходимыми данными. Как мне это сделать? Ниже приведены мои файлы aspx & aspx.vb.

aspx:

<asp:GridView ID="grdItems" runat="server"  Width="100%" AllowPaging="True" CellPadding="4" ForeColor="#333333" GridLines="Horizontal" AutoGenerateColumns="False">
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" Font-Size="X-Small" />
     <RowStyle BackColor="#EFF3FB" />
     <EditRowStyle BackColor="#2461BF" />
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
     <pagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" Font-Size="Small" />
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
     <AlternatingRowStyle BackColor="White" />
       <Columns>

      <asp:BoundField DataField="actionItemId" HeaderText="Item Id"  >
      <ItemStyle Font-Size="Small" VerticalAlign="Top" />
      <HeaderStyle Font-Bold="True" Font-Size="Small" HorizontalAlign="Left" Width="65px" />
      <FooterStyle Font-Size="X-Small" />
      </asp:BoundField>
                
      <asp:TemplateField HeaderText="Description" >
      <ItemStyle Font-Size="Small" VerticalAlign="Top" />
      <HeaderStyle Font-Size="Small" HorizontalAlign="Left" Width="265px"/>
      <ItemTemplate>
       
      </ItemTemplate>
      </asp:TemplateField>
     
      <asp:TemplateField HeaderText="Actions Taken">
      <ItemTemplate>
      <tr>
      <td colspan="1">
      <asp:TextBox runat="server" ID="actionsTB" TextMode="MultiLine"> </asp:TextBox>
      </td>
      </tr>
      </ItemTemplate>
      <ItemStyle Font-Size="Small" VerticalAlign="Top" />
      <HeaderStyle Font-Bold="True" Font-Size="Small" HorizontalAlign="Left" />
      </asp:TemplateField>
            
       </Columns>
         <pagerSettings Mode="NumericFirstLast" />
         </asp:GridView>


aspx.vb:(метод привязки для этого столбца)

Private Sub GetActionsTaken(ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs, ByVal curActionItemId As Int32)
       Dim flexdata As DataSet = Nothing
       flexdata = CType(Session("flexdata"), DataSet)
       Dim myRows() As DataRow
       Dim sbData As New System.Text.StringBuilder
       Dim dbhelper As New DbHelper

       myRows = flexdata.Tables(table.PastActivities).Select("actionitemid=" & curActionItemId)
       For Each myRow As DataRow In myRows
       sbData.Append("" & dbhelper.ConvertDrString(myRow.Item(colActivity.occurredOn)) & " - " & "" & dbhelper.ConvertDrString(myRow.Item(colActivity.personFullName)) & "<br>")
       sbData.Append(dbhelper.ConvertDrString(myRow.Item(colActivity.activity)) & "<br><br>")
       Next
       e.Row.Cells(gridCol.ActionsTaken).Text = sbData.ToString
       dbhelper = Nothing
     End Sub


Ранее данные передавались непосредственно в текст столбца, как показано выше в файле aspx.vb. Но теперь у меня есть текстовое поле в том же столбце, и я хочу связать те же данные с этим текстовым полем. Любая помощь будет очень признательна. Спасибо!

Что я уже пробовал:

Новое ASP.Net

Gerry Schmitz

Одна строка под каждым "рядом столбцов" по сравнению с дополнительным столбцом ничего не покупает; только путаница для того, кто пытается заглянуть в столбец.

Member 13952925

Да. Но мое требование состоит в том, чтобы в этой колонке было много текста, и я хочу уменьшить количество страниц конечных результатов таблицы. Если я перемещу этот текст в отдельную строку, я могу распространить текст по всему дисплею, и количество моих страниц уменьшится.

Vincent Maverick Durano

Ты о чем это говоришь ASP.NET GridView или DataGridView WinForm?

Member 13952925

ASP.Net GridView @Vincent

Vincent Maverick Durano

Если ваше намерение состоит только в отображении данных, то вы можете использовать элемент управления повторителем вместо этого, чтобы иметь большую гибкость с точки зрения форматирования макета. Вы также можете использовать DataList, так как он предоставляет такие свойства, как RepeatLayout и RepeatDirection, которые вы можете установить.

Member 13952925

Так что, это не возможно, чтобы сделать это на сетке?

Vincent Maverick Durano

Возможно, однако, что это противоречит цели, поскольку GridView предназначен для выполнения CRUD в табличном/строковом формате. Он не обеспечивает большей гибкости с точки зрения компоновки по сравнению с ретранслятором.

Member 13952925

О. окей. Спасибо, Винсент. Я очень ценю вашу помощь.

Vincent Maverick Durano

Еще бы! Я добавил быстрый пример кода для вашей справки в разделе решение. Надеюсь, это поможет!

Member 13952925

Спасибо за код, Винсент. Я постараюсь поступить именно так.

Vincent Maverick Durano

Без проблем. Только одна вещь. Пожалуйста, не забудьте закрыть свою тему, отметив решение, которое поможет вам ответить ради будущих читателей. Таким образом, когда кто-то ищет ту же проблему,он может легко сориентироваться, какое решение поможет вам. Спасибо!

Member 13952925

Итак, Винсент, мой босс попросил меня изменить существующий GridView вместо преобразования его в ретранслятор. Итак, перейдя к вопросу, я добавил текстовое поле внутри GridView. Я хочу привязать необходимые данные к этому текстовому полю. Как мне это сделать? Я обновляю вопрос с помощью своего кода. Смотреть выше.

Vincent Maverick Durano

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

Member 13952925

Конечно. Я создам новую нить.

Vincent Maverick Durano

Спасибо. Дайте мне знать, чтобы я мог дать вам быстрый пример.

Member 13952925

Винсент, я отправил новый вопрос. Я очень ценю вашу помощь.

Vincent Maverick Durano

Я уже ответил на вашу другую тему.

1 Ответов

Рейтинг:
6

Vincent Maverick Durano

Основываясь на нашем обсуждении комментариев, вот быстрая демонстрация для вашей справки:

Aspx-файл:

<asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate>
            <table>
        </HeaderTemplate>
        <ItemTemplate>
                 <tr>
                    <td><%# DataBinder.Eval(Container.DataItem, "Id") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "Field1") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "Field2") %></td>
                    <td><%# DataBinder.Eval(Container.DataItem, "Field3") %></td>
                 </tr>
                 <tr>
                   <td colspan="4"><%# DataBinder.Eval(Container.DataItem, "Field4") %></td>
                 </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
</asp:Repeater>

С ФОНОВЫМ КОДОМ:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebFormDemo
{
    public partial class Repeater : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e) {
            if (!IsPostBack) {
                BindRepeater();
            }

        }

        private void BindRepeater() {
            var data = GetSampleData();

            Repeater1.DataSource = data;
            Repeater1.DataBind();
        }

        private List<Student> GetSampleData() {
            List<Student> students = new List<Student>();
            students.Add(new Student() { Id = 1, Field1 = "SomeText 1", Field2 = "SomeText 1", Field3 = "SomeText 3", Field4="SomeText with more contents here and there." });
            students.Add(new Student() { Id = 2, Field1 = "SomeText 2", Field2 = "SomeText 2", Field3 = "SomeText 2", Field4 = "SomeText with more contents here and there." });
            students.Add(new Student() { Id = 3, Field1 = "SomeText 3", Field2 = "SomeText 3", Field3 = "SomeText 3", Field4 = "SomeText with more contents here and there." });

            return students;
        }
    }

    public class Student
    {
        public int Id { get; set; }
        public string Field1 { get; set; }
        public string Field2 { get; set; }
        public string Field3 { get; set; }
        public string Field4 { get; set; }
    }
}


Field4 в приведенном выше примере должна отображаться под каждой строкой запись.

Надеюсь, это поможет!