Проблема программного добавления строк в GridView с заранее определенными столбцами - PullRequest
0 голосов
/ 23 февраля 2011

Учитывая элемент управления GridView, определенный следующим образом:

<asp:GridView
      ID="AttachedFilesGridView"
      runat="server"
      AllowSorting="true"
      AllowPaging="false"
      CellPadding="5"
      AutoGenerateColumns="false"
      CssClass="wsajax_DlgCodeBox">
      <Columns>
        <asp:TemplateField>
          <ItemTemplate>
            <asp:CheckBox ID="CheckSelect" runat="server" />
          </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField Datafield="FilePath" HeaderText="File Path" SortExpression="FilePath" />
        <asp:BoundField Datafield="AttachmentID" HeaderText="Attachment ID" />
       </Columns>
  </asp:GridView>

Я пытаюсь сгенерировать строки для вида сетки на стороне сервера в C #, используя этот код:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("CheckSelect", typeof(CheckBox))); // <<<--- ?????
dt.Columns.Add(new DataColumn("FilePath", typeof(string)));
dt.Columns.Add(new DataColumn("AttachmentID", typeof(string)));

string errMsg = String.Empty;
char[] delimiters = { ',' };
string[] pendingsIDs = PendingFileAttachments.Value.Split(delimiters,     StringSplitOptions.RemoveEmptyEntries);
foreach (string adapterID in pendingsIDs)
{
    FileAdapter adapter = FileAdapter.LoadFileAdapter(profile, new Guid(adapterID), ref errMsg);
    if (adapter != null)
    {
        DataRow dr = dt.NewRow();
        CheckBox cb = new CheckBox();
        cb.Checked = FileAdapter.IsReserved;
        cb.ID = "CheckSelect";
        dr["CheckSelect"] = cb; <<<---?????
        dr["FilePath"] = adapter.GetPartialFilePath();
        dr["AttachmentID"] = adapter.ObjectID.ToString("N");
        dt.Rows.Add(dr);    
    }
}

AttachedFilesGridView.DataSource = dt;
AttachedFilesGridView.DataBind();

Проблема заключается в следующем:

Поля «FilePath» и «AttachmentID» установлены правильно в сетке, однако элемент управления CheckBox никогда не устанавливается правильно;оно всегда не проверено.

Мой вопрос:

Как мне установить это поле CheckBox из C # при создании новой строки?

PS Я не уверенесли я создаю строку правильно в первую очередь.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Используя предложенное изменение антисанитарии, вам нужно изменить разметку aspx следующим образом:

....
      <ItemTemplate>
        <asp:CheckBox ID="CheckSelect" runat="server" Checked='<%# Eval("CheckSelect")' />
      </ItemTemplate>
....
1 голос
/ 23 февраля 2011

Я полагаю, что вы захотите сделать тип столбца (в DataTable) логическим, а не флажок, как это должно быть источником данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...