木头MTmutou 2013-11-08 13:29 采纳率: 0%
浏览 1055

templatefield怎么设置显示效果像label一样 而不是text一样可被编辑

aspx文件中只有这样的代码

SkinID="gridviewSkin"
AutoGenerateColumns="False"
EmptyDataText="对不起,没有相应数据!">
/asp:GridView

cs文件中的代码部分如下

TemplateField tf = new TemplateField();
tf.ShowHeader = true;
tf.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "关井信息", "", (i + 1).ToString(), true, true);
tf.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, infor, xxname, (i + 1).ToString(), true, true);
tf.HeaderStyle.Height = Unit.Percentage(100);
tf.HeaderStyle.Width = Unit.Pixel(60);
tf.ItemStyle.Width = Unit.Pixel(60);
gv.Columns.Add(tf);

还有很多段类似的代码 设置显示不同的列。

显示出的效果如图所示:
图片在百度知道里才能看到
CSDN移动问答

图片中的数据部分可以进行编辑甚至删除 该怎么设置能让它显示的像标签label一样

不能被编辑

注:本人新手 这是项目中本来写好的代码

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2024-02-13 16:50
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。


    该回答引用文心大模型4.0,仅提供参考,不保证完全正确
    目前为文心大模型4.0专栏,网页版本:V2.5.3(2024.1.19)
    在ASP.NET WebForms中,TemplateField 允许你自定义 GridView 控件中列的显示方式。如果你想要让某列的数据显示得像标签(Label)一样,即不可编辑,你应该在 ItemTemplate 中使用 Label 控件而不是可编辑的控件,比如 TextBox


    你提供的代码示例中并没有显示 GridViewTemplate 类的具体实现,我猜测这个类可能是用来生成模板的。为了让数据显示为不可编辑的标签,你需要确保在生成 ItemTemplate 时使用的是 Label 控件。


    这里有一个简化的示例,展示了如何为 GridView 添加一个包含 LabelTemplateField


    ASPX 文件:

    <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" EmptyDataText="对不起,没有相应数据!">
    </asp:GridView>
    

    CS 文件(代码后置):

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridView();
        }
    }
    
    private void BindGridView()
    {
        // 假设你有一个数据源,这里我们使用一个简单的列表作为示例
        List<string> dataSource = new List<string> { "信息1", "信息2", "信息3" };
        gv.DataSource = dataSource;
        gv.DataBind();
    
        // 在数据绑定后动态添加 TemplateField
        TemplateField tf = new TemplateField();
        tf.HeaderText = "关井信息"; // 设置列头文本
        tf.ItemTemplate = new MyGridViewTemplate(ListItemType.Item);
        gv.Columns.Add(tf);
    }
    
    // 自定义的 ITemplate 实现类
    public class MyGridViewTemplate : ITemplate
    {
        private ListItemType _templateType;
    
        public MyGridViewTemplate(ListItemType type)
        {
            _templateType = type;
        }
    
        public void InstantiateIn(Control container)
        {
            switch (_templateType)
            {
                case ListItemType.Item:
                    // 为数据行创建 Label 控件
                    Label lbl = new Label();
                    lbl.DataBinding += new EventHandler(Label_DataBinding);
                    container.Controls.Add(lbl);
                    break;
                // 你可以根据需要添加其他类型,比如 Header、Footer 等
            }
        }
    
        private void Label_DataBinding(object sender, EventArgs e)
        {
            Label lbl = (Label)sender;
            GridViewRow container = (GridViewRow)lbl.NamingContainer;
            object dataValue = DataBinder.Eval(container.DataItem, "."); // 这里假设数据源是简单的字符串列表,所以直接使用 "." 来获取当前项的值
            lbl.Text = dataValue.ToString(); // 设置 Label 的文本为数据项的值
        }
    }
    

    在这个示例中,我们创建了一个自定义的 MyGridViewTemplate 类来实现 ITemplate 接口。在 InstantiateIn 方法中,我们根据模板类型(在这个例子中是数据行类型 ListItemType.Item)来动态创建控件。对于数据行,我们创建了一个 Label 控件,并通过数据绑定事件来设置其文本值。这样,GridView 中的数据就会以标签的形式显示,而不是可编辑的文本框。


    图片转文字可能造成误差,不代表模型真实水平

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名