2012-04-04 6 views
4

У меня есть GridView, который имеет 3 столбца: FirstName, LastName и TemplateField FullName, где я соединяю FirstName и LastName.Как передать строку GridView в функцию TemplateField?

Предполагая вызов DisplayFullName - это функция, которую я хочу использовать для конкатенации FirstName и LastName, Как передать аргумент строки функции и как объявить параметр функции? Спасибо.

Вот мой код для столбца FullName:

 <asp:TemplateField HeaderText="FullName"> 
      <ItemTemplate> 
       <%# DisplayFullName(???) %> 
      </ItemTemplate> 
     </asp:TemplateField> 

Вот мое заявление для функции:

protected string DisplayFullName(???) 
    { ... } 

??? где мне нужна помощь. ИЛИ мне нужно передать строку вообще? Если каждый раз вызывается DisplayFullName, то известна строка «current». Если да, как мне получить доступ к текущей строке в DisplayFullName?

Я упростил операцию для ясности вопроса. На самом деле в строке, которая мне нужна, может быть до 20 значений, и я хочу сделать некоторые вычисления в вызываемой функции.

ответ

3

@RJIGO: Вы можете использовать функцию следующим образом:

<asp:TemplateField HeaderText="Name"> 
    <ItemTemplate> 
     <%# DisplayFullName(Eval("FirstName"), Eval("LastName"))%>   
     </ItemTemplate> 
    </asp:TemplateField> 

и ваш код за метод понравится

protected string DisplayFullName(object FirstName, object LastName) 
    { 
     return Convert.ToString(FirstName)+Convert.ToString(LastName); 
    } 
2

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

<asp:TemplateField HeaderText="Name"> 
       <ItemTemplate> 
        <%#Eval("FirstName") %>&nbsp;<%#Eval("LastName") %> 
       </ItemTemplate> 
      </asp:TemplateField> 
</asp:TemplateField> 
+0

Я добавил разъяснение в свой вопрос. Сценарий более сложный. В действительности, мне нужно сделать некоторые вычисления для TemplateField. – RJIGO

+0

<% # FunctionName (параметр1, parameter2, ..., parameterN)%> вызывает вашу функцию следующим образом. параметром может быть ваш rowid или firstname, фамилия - что угодно. – Neha

+0

Это не то, что я хочу сделать. Потому что все аргументы содержатся в строке. Могут быть до 20 аргументов. Поэтому все, что я должен передать, это строка, затем извлекать все данные из строки в вызываемой функции. – RJIGO

1

Должно быть, так как никто, казалось, не дал вам ответа что делает именно то, что вы просите - передача строки в функцию backend.

Просто передайте "Container.DataItem" вашей функции - это DataRow

<asp:TemplateField> 
    <ItemTemplate> 
     <%# DisplayFullName(Container.DataItem) %> 
    </ItemTemplate> 
</asp:TemplateField> 

затем в CodeBehind вы можете манипулировать ею как DataRowView:

public string DisplayFullName(object containerDataItem) 
{ 
    string firstName = ((DataRowView)containerDataItem)["FirstName"].ToString(); 
    string lastName = ((DataRowView)containerDataItem)["LastName"].ToString(); 
    ... 

Надеется, что это помогает!

Смежные вопросы