it鸟 2024-06-09 09:23 采纳率: 80%
浏览 11
已结题

WebForm实现Datagridview (可以动态加载行 (由料号设置决定))

之前用WinForm做的一个项目,打算转WebForm. 不知道datagridview该怎么写,请指点,感谢。
1.之前的项目,是用C# (VS2019)开发的。

img

2.现在要转换成MVC(VSCODE)。

img

WebForm:
A.目前界面是写在View里面的 。【我有尝试用asp的方式嵌入datagird,但是用html显示不出来效果】

<h3 class="d-flex justify-content-center" LangName="@ViewBag.Title">@ViewBag.Title</h3>

<div class="container" id="@ViewBag.DivID">
    <div class="row d-flex justify-content-center">
        <div class="col-md-4">
            <div class="input-group mt-1">
                <div class="input-group-prepend">
                    <span class="input-group-text" LangName="5094">IO号码</span>
                </div>
                <input type="text" class="form-control" style=" background-color: yellow" id="Barcode" inputmode="none">
            </div>
            <div class="input-group mt-1">
                <div class="input-group-prepend">
                    <span class="input-group-text" LangName="7354">物料编码</span>
                </div>
                <input type="text" class="form-control" id="ItemCode" disabled>
            </div>
            <div class="input-group mt-1">
                <div class="input-group-prepend">
                    <span class="input-group-text" LangName="6457">工站</span>
                </div>
                <input type="text" class="form-control" style=" background-color: yellow" id="Barcode" inputmode="none">
            </div>
            <div class="input-group mt-1">
                <div class="input-group-prepend">
                    <span class="input-group-text" LangName="6457">扫描条码</span>
                </div>
                <input type="text" class="form-control" style=" background-color: yellow" id="Barcode" inputmode="none">
            </div>
            <div>
                <asp:DataGrid id="ThisDataGrid" runat="server" CellPadding="4" CellSpacing="0" BorderStyle="Solid"
                    BorderWidth="1">
                    <Columns>
                        <asp:BoundColumn HeaderText="品項" DataField="ID" />
                        <asp:BoundColumn HeaderText="價格" DataField="Price" />
                    </Columns>
                </asp:DataGrid>
            </div>
            <div>
                <asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="Button1_Click" />
            </div>
        </div>
    </div>
</div>
<div id="checkMsg" hidden>
    <h5 LangName="3974">check msg!</h5>
</div>
<div id="CodeType" hidden>
    <input type="text" class="form-control" id="CodeType" disabled>
</div>

II。当然,如果不用写在View中,写在Controller也是可以,主要是不知道该怎么写。 谢谢大家帮忙!

  • 写回答

12条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-09 09:23
    关注

    引自免费微信小程序:皆我百晓生

    为了将 WinForms 中的 DataGridView 功能迁移到 ASP.NET Web Forms,你需要在服务器端创建数据源,然后绑定到 ASP.NET 的 GridView 控件上。这里是一个详细的步骤指南:

    首先,在 Web Form 的后台代码(通常是 Default.aspx.cs 或者其他扩展名为 .cs 的文件)中,你需要定义一个类来存储数据,并且创建一个方法用于获取动态数据。例如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadDynamicData();
            }
        }
    
        private List<Item> GetDynamicData()
        {
            // 这里只是一个示例,实际应用中可能从数据库或其他来源获取数据
            return new List<Item>
            {
                new Item { ID = "911300108117", Price = 10080 },
                new Item { ID = "10073", Price = 10073 },
                new Item { ID = "117G0-051815-R4", Price = 11700 }
            };
        }
    
        private void LoadDynamicData()
        {
            var data = GetDynamicData();
    
            ThisDataGrid.DataSource = data;
            ThisDataGrid.DataBind();
        }
    }
    
    public class Item
    {
        public string ID { get; set; }
        public int Price { get; set; }
    }
    

    接下来,修改前端页面(Default.aspx),替换 DataGrid 控件为 GridView,并调整样式:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>My Web Form</title>
    </head>
    <body>
        <h3 class="d-flex justify-content-center" LangName="@ViewBag.Title">@ViewBag.Title</h3>
    
        <div class="container" id="@ViewBag.DivID">
            <div class="row d-flex justify-content-center">
                <!-- ... 其他输入框部分保持不变 -->
    
                <div>
                    <asp:GridView ID="ThisDataGrid" runat="server" CellPadding="4" CellSpacing="0" BorderStyle="Solid"
                        BorderWidth="1">
                        <Columns>
                            <asp:BoundField DataField="ID" HeaderText="品項" />
                            <asp:BoundField DataField="Price" HeaderText="價格" />
                        </Columns>
                    </asp:GridView>
                </div>
                <div>
                    <asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="Button1_Click" />
                </div>
            </div>
        </div>
        <div id="checkMsg" hidden>
            <h5 LangName="3974">check msg!</h5>
        </div>
        <div id="CodeType" hidden>
            <input type="text" class="form-control" id="CodeType" disabled>
        </div>
    </body>
    </html>
    

    这样,你应该能够在 Web Form 中看到与 WinForms 类似的动态加载的表格了。如果你需要根据用户输入的数据动态改变表格内容,可以在 Button1_Click 方法中添加相应逻辑,更新 GetDynamicData 函数的结果并重新调用 LoadDynamicData()

    注意:在实际项目中,你需要处理数据验证、错误处理以及可能的安全问题,比如 SQL 注入等。这只是一个基础的迁移示例,具体的实现可能需要根据你的业务需求进行调整。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月9日