Как я могу использовать обработчик событий OnRowEditing в виде сетки, чтобы разрешить редактирование определенных ячеек в виде сетки? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть сетка, которая отображает данные из файла, который загружают наши клиенты. После загрузки файл пропускается через несколько методов проверки, и если с данными возникают проблемы, ячейки в виде сетки подсвечиваются красным и получают всплывающую подсказку, в которой кратко описывается проблема. Недавно я добавил кнопку «Редактировать недействительные записи», которую я хочу запрограммировать, чтобы позволить клиентам вносить изменения в ошибочные ячейки в каждой строке, но я не уверен, как на самом деле установить конкретные ячейки в режим редактирования. , Я довольно новичок в дизайне внешнего интерфейса (если вы хотите вызвать этот интерфейс), и я не смог найти в Интернете никаких ресурсов, которые бы помогли мне вручную установить ячейки (или даже строки) в виде сетки для режима редактирования. Приведенный ниже код перебирает каждую из строк в виде сетки и, если какая-либо из его ячеек выделяется красным цветом (т. Е. В одной из ячеек есть ошибка), он устанавливается в видимый и для этого вызывается событие OnRowEditing. строки.

Я заглянул в класс GridViewEventArgs в надежде, что смогу внести в него некоторые изменения, но ни одно из свойств или методов, похоже, не имеет никакого смысла для того, чего я пытаюсь достичь.

for (int i = 0; i < grvUpload.Rows.Count; ++i)
{
   if (grvUpload.Rows[i].Cells[0].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[1].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[2].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[3].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[4].BackColor.Equals(Color.Red) || grvUpload.Rows[i].Cells[5].BackColor.Equals(Color.Red))
   {
      grvUpload.Rows[i].Visible = true;
      grvUpload.SetEditRow(i);
   }
   else
   {
      grvUpload.Rows[i].Visible = false;
   }
}

...

protected void grvUpload_RowEditing(object sender, GridViewEditEventArgs e)
{
   // ?
}

Я ожидаю, что строка grvUpload.SetEditRow(i) установит для i-й строки в виде сетки режим редактирования, но я предполагаю, что должен сделать это в методе grvUpload_RowEditing.

1 Ответ

0 голосов
/ 19 июня 2019

в aspx, измените asp: BoundField на asp: TemplateField, например:

 <asp:TemplateField HeaderText="xxx">
      <ItemTemplate>
          <asp:TextBox runat="server" Style="text-align: left" ID="id" Width="400px"  Text='<%# Bind("columnName") %>'></asp:TextBox>
       </ItemTemplate>
</asp:TemplateField>

, затем, когда привязка к сетке будет видна, вы можете редактировать ячейку. Если вы хотите редактировать ячейки после нажатия кнопки редактирования, например, так:

<asp:TemplateField HeaderText="xxx" >
                <ItemTemplate>
                    //use label show message
                    <asp:Label id="id" runat="server" 
                        Text='<%# Bind("columnName") %>'/>                        
                </ItemTemplate>
                <EditItemTemplate>                   
                    <asp:TextBox runat="server" Style="text-align: left" ID="idT" Width="400px"  Text='<%# Bind("columnName") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>

в .cs grvUpload_RowEditing, добавьте это,

grvUpload.EditIndex = e.NewEditIndex;// может быть, вам нужно снова привязать gridview

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