FindControl如果我需要找到Control内部的任何内容GridView Template,更具体地说,方法是如何工作的ItemTemplate?
我有一个,hyperlink但它无法找到相同的.
用代码更新问题
GridView 代码如下:
<asp:GridView ID="grvYourOpportunities" runat="server" AllowPaging="True" AutoGenerateColumns="False"
DataKeyNames="ID#,B,H" PageSize="20" CellPadding="4" ForeColor="#333333" GridLines="Both"
OnRowDataBound="grvYourOpt_RowDataBound">
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
i
</HeaderTemplate>
<ItemTemplate>
<%# Eval("i") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
H
</HeaderTemplate>
<ItemTemplate>
<%--<a href="javascript:ShowChildGrid('div<%# Eval("ID#") %>');">
<img id="imgdiv<%# Eval("ID#") %>" alt="Click" border="0" src="plus.gif" runat="server" /> </a> --%>
<asp:HyperLink runat="server" ID="hlPlus" ImageUrl="~/plus.gif"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
B
</HeaderTemplate>
<ItemTemplate>
<%--<%# Eval("B") %>--%> …Run Code Online (Sandbox Code Playgroud) 我有一个绑定到ObjectDataSource的GridView.我也支持编辑,这很好用.但是,我想安全地显示HtmlEncode文本,因为我们允许在某些字段中使用特殊字符.这与标准的BoundFields有关,因为我只是将HtmlEncode设置为true.
但是为了设置验证控件,需要使用TemplateFields.如何轻松添加HtmlEncoding以这种方式输出?这是一个ASP.NET 2.0项目,所以我正在使用更新的数据绑定快捷方式(例如Eval和Bind).
我想做的是如下:
<asp:TemplateField HeaderText="Description">
<EditItemTemplate>
<asp:TextBox ID="TextBoxDescription" runat="server"
Text='<%# System.Web.HttpUtility.HtmlEncode(Bind("Description")) %>'
ValidationGroup="EditItemGrid"
MaxLength="30" />
<asp:Validator ... />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="LabelDescription" runat="server"
Text='<%# System.Web.HttpUtility.HtmlEncode(Eval("Description")) %>' />
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
但是,当我这样尝试时,我收到以下错误:
CS0103:当前上下文中不存在名称"Bind"
这段代码
<asp:DropDownList runat="server" ID="testdropdown" SelectedValue="2">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
产生此错误:
无法以声明方式设置"SelectedValue"属性.
然而,这是数据绑定GridViews的合法且常用的编辑模板.该SelectedValue属性肯定在这里以声明方式设置.
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
Run Code Online (Sandbox Code Playgroud)
问题是:当你被允许以声明方式设置它和不允许你设置它的情况之间有什么区别?错误消息暗示它永远不会被允许.
asp.net data-binding selectedvalue templatefield drop-down-menu
对于我的生活,我无法在TemplateField中绑定CheckBox控件的Checked属性(明确地说).
我试过了:
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval("Deactivated")%>"></asp:CheckBox>
</ItemTemplate>
<asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
和
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval(Container.DataItem, "Deactivated")%>"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
我一直看到警告说:
无法从'Checked'属性的字符串表示''创建'System.Boolean'类型的对象
我究竟做错了什么?
我有一个GridView.我的GridView有一个包含"选项"列的列.此列包括传统的CommandField选项(编辑,删除等).我在使用CommandField时可以使用代码设置.但是,我需要做一些自定义格式化,所以我需要将CommandField转换为TemplateField.
我的问题是,如何从TemplateField中的各种LinkButton元素触发OnRowCommand,OnRowEditing,OnRowDeleting和OnRowUpdating事件?
谢谢!
我似乎无法弄清楚如何使用数据绑定和自定义字段对gridview进行排序.
自定义字段如下所示:
<asp:Label ID="lblItems" runat="server" Text='<%# GetItems((int)DataBinder.Eval(Container.DataItem, "ObjectCategoryID"))%>' />
Run Code Online (Sandbox Code Playgroud)
它需要一个函数来显示给定类别有多少项.
数据绑定字段的排序是完整的,但不是自定义字段.我也在寻找一种适用于我所有网格视图的通用方法.
有人可以帮我正确的方向吗?下面是我的完整自定义网格代码.
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections;
namespace CustomControls
{
public class CustomGrid : GridView
{
public CustomGrid()
{
PageIndexChanging += CustomGrid_PageIndexChanging;
}
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
return newSortDirection;
} …Run Code Online (Sandbox Code Playgroud) 这是我的GridView标记.
<Columns>
<asp:TemplateField HeaderText="Customer Name">
<ItemTemplate>
<asp:Label ID="lblname" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Customer.Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="PickUpPoint">
<ItemTemplate>
<asp:Label ID="lblPickUpPoint" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Pickuppoint")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
Run Code Online (Sandbox Code Playgroud)
我有一个按钮,将值存储在excel对象的工作表单元格中.
for (int i = 0; i < GridView2.Rows.Count; i++)
{
for (int j = 0; j < GridView2.Rows[i].Cells.Count; j++)
{
xlWorkSheet.Cells[i + 1, j + 1] = GridView2.Rows[i].Cells[j].Text;
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取GridView的值并将其存储在工作表中,因为GridView2.Rows[i].Cells[j].Text返回空字符串.
我正在使用GridView和ObjectDataSource.我正在实施分页和排序.
在ObjectDataSource上:
objectDataSource.TypeName = value;
objectDataSource.SelectMethod = "Select";
objectDataSource.SelectCountMethod = "SelectCount";
objectDataSource.SortParameterName = "sortExpression";
objectDataSource.EnablePaging = true;
Run Code Online (Sandbox Code Playgroud)
在GridView上:
gridView.AllowPaging = true;
gridView.AllowSorting = true;
gridView.DataSource = objectDataSource;
Run Code Online (Sandbox Code Playgroud)
为了使分页和排序工作,我将"EnableSortingAndPagingCallbacks"设置为True.之前,我得到一个"System.Web.HttpException:GridView触发的事件排序,但没有处理." 这解决了它.
如果我在GridView中只使用BoundFields,这很好并且工作正常.
但是,如果我使用TemplateFields,我会收到"NotSupportedException:TemplateField不支持回调,因为某些控件无法在回调中正确更新.在GridView上关闭回调."
哪个,有道理.我只需要知道如何在不使用EnableSortingAndPagingCallbacks的情况下进行排序.
如果EnableSortingAndPagingCallbacks = True:
如果EnableSortingAndPagingCallbacks = False:
如何让Paging,Sorting和TemplateField同时工作?
澄清实施情况:
将ObjectDataSource与GridView一起使用需要实现一个名为Select的方法,该方法提供排序表达式,要返回的行数和起始行:
public IEnumerable<CountyAndStateGridRow> Select(string sortExpression, int maximumRows, int startRowIndex)
{
string oql = "select County order by {" + sortExpression + "}" ;
var counties = …Run Code Online (Sandbox Code Playgroud) 我把数据放在数据表中,例如
dt.TableName = "SA1";
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)
现在我不确定我是否应该使用boundfield(对于所有列)
<asp:BoundField DataField="Unit" HeaderText="Unit" SortExpression="Unit" />
Run Code Online (Sandbox Code Playgroud)
或使用
<asp:TemplateField>
<HeaderTemplate>
Units
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox runat="server" ID="txbUnits" Text='<%# Eval("Unit")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
并且随着我的进展添加数据,gridview的目的只是为了显示数据
我在GridView中的TemplateField内部的ItemTemplate中使用ASP:LinkButton.对于链接按钮的命令参数,我想从gridview绑定的数据源传递行的ID,所以我做的是这样的:
<asp:LinkButton ID="viewLogButton" CommandName="viewLog" CommandArgument="<%#Eval("ID")%>" Text="View Log" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
不幸的是,生成的HTML是这样的:
<asp:LinkButton ID="viewLogButton" CommandName="viewLog" CommandArgument="3" Text="View Log" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
它似乎正在正确解析Eval(),但这在某种程度上导致它不解析LinkButton标记并将其作为文字文本转储出来.有人知道吗:
a)为什么会发生这种情况,以及b)这个问题的一个好方法是什么?
asp.net ×10
templatefield ×10
gridview ×9
c# ×4
data-binding ×3
.net ×1
boundfield ×1
checkbox ×1
commandfield ×1
excel ×1
findcontrol ×1
html-encode ×1
linkbutton ×1
sorting ×1