Представление сетки строк нижнего колонтитула

У меня есть строка нижнего колонтитула в представлении сетки, чтобы добавить новую запись. В нижнем колонтитуле у меня есть три столбца (имя, номер телефона и адрес. Когда пользователь вводит номер телефона, необходимо получить соответствующие данные и связать их с другими элементами в строках нижнего колонтитула.

  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
        ShowFooter="true" onrowdatabound="GridView1_RowDataBound">
    <Columns>
    <asp:TemplateField HeaderText="Name">
     <ItemTemplate>
      <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
      </ItemTemplate>
       <FooterTemplate>
      <asp:TextBox ID="txtName" runat="server" ></asp:TextBox>
     </FooterTemplate>
     </asp:TemplateField>
    <asp:TemplateField HeaderText="Phone">
     <ItemTemplate>
      <asp:Label ID="lblPhone" runat="server" Text='<%# Eval("Phone") %>'></asp:Label>
      </ItemTemplate>
     <FooterTemplate>
      <asp:TextBox ID="txtPhone" runat="server"  ></asp:TextBox>
     </FooterTemplate>
     </asp:TemplateField>
    </Columns>
    </asp:GridView>

person user3721199    schedule 31.07.2014    source источник
comment
Я понятия не имею, как я могу добиться того же. Могу ли я вызвать веб-службу или использовать jquery для того же   -  person user3721199    schedule 31.07.2014


Ответы (1)


Вы можете попробовать что-то вроде этого..

ASP:

<asp:TemplateField HeaderText="Name">
   <ItemTemplate>
      <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'</asp:Label>
   </ItemTemplate>
   <FooterTemplate>
      <asp:TextBox ID="txtName" runat="server" autopostback="true" OnTextChanged="txtName_TextChanged"></asp:TextBox> //added code here
   </FooterTemplate>
 </asp:TemplateField>

Код С# позади

protected void txtName_TextChanged(object sender, EventArgs e)
{
    //code here call back fields to other textboxes
}

Это не тестировалось, но я использовал onTextChanged раньше.. просто, возможно, не в сетке.. вам может понадобиться использовать..

Textbox txtPhone = GridView1.FooterRow.FindControl("txtPhone");

чтобы найти элементы управления в нижнем колонтитуле. Как только вы найдете элементы управления, вы сможете заполнить свое текстовое поле с помощью sqldataadapter или datareader.

НАДЕЮСЬ, что это ставит вас в правильном направлении!

person Humpy    schedule 31.07.2014
comment
Нет, как только фокус будет потерян на txtName, txtName_TextChanged сработает и сделает все, что вы скажете ему в методе. - person Humpy; 31.07.2014
comment
Событие изменения текста запускается для обычного Textbox . Это также вызывает обратную публикацию страницы, что приводит к ненужным круговым поездкам. так нужен механизм, который будет связывать асинхронный способ - person user3721199; 31.07.2014
comment
Вы можете использовать UpdatePanel. Таким образом, это асинхронно. Вам нужно будет поместить весь вид сетки в UpdatePanel. - person Humpy; 01.08.2014
comment
Размещение GridView на панели обновления будет лучшей идеей. Однако вся сетка будет размещена на сервере. Могу ли я использовать json и веб-метод для того же? Я понятия не имею, как связать нижний колонтитул GridView через объекты json. - person user3721199; 01.08.2014
comment
Без понятия, чувак. Панель обновлений — это путь, по которому я пошел и, вероятно, продолжу идти. - person Humpy; 01.08.2014