gpt4 book ai didi

c# - 如何使用 asp.net 和 c# 从不同的表中创建自定义列的 GridView ?

转载 作者:行者123 更新时间:2023-11-30 17:13:28 26 4
gpt4 key购买 nike

现在我对如何使用以下结构和标准创建 gridview 感到非常困惑:

注意:gridview将从不同的表中获取数据

列:1. IDcol 唯一值,它将来自表A(作为文本)2.日期也来自表A(作为文本)3. link1 它将是指向另一个页面的超链接,url 的参数将为“IDcol”列值,但如果此记录存在于表 B 中且具有相同的“IDcol”,则显示的文本将更改显示为“查看/编辑” "如果不存在,它将是 "添加新的"

数据库结构:

表A:

IDcol as (primary key),
Date

表B:

ID,
IDcol as (foreign key from tableA).
other fields

所以我需要使用循环填充 gridview,因为我必须检查每一行并使用一些条件

对不起,如果我的描述方式不清楚,但我真的很困惑


我的删除部分代码:

        <asp:LinkButton ID="DeleteLink" runat="server" Text="Delete"     CommandName="Delete"></asp:LinkButton>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>


DeleteCommand="DELETE VisitsInfo WHERE ID=@VID">


<DeleteParameters>
<asp:Parameter Name="VID" Type="Int64" />
</DeleteParameters>

在后面的代码中:

 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{

int VID = int.Parse(GridView1.DataKeys[0].Value.ToString());
SqlDataSourceVisits.DeleteParameters[0].DefaultValue = VID.ToString();

}

当我点击删除链接删除行时,它起作用了,但是当刷新页面时,它删除了另一行而不点击删除链接,为什么会这样?

最佳答案

无论您使用多少表在 Gridview 中显示数据,最好和更灵活的方法是使用 OnRowDataBound。

//do some database queries to return the appropriate value
DataTable dt = new DataTable();
private void Bind()
{
//set up the dt with all the required data from single or multiple tables
}

//Then in the page Load method, call the above Bind method
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}

//then do something like the following
int idx = 0;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//do some database queries to return the appropriate value, then do something like the following
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[0].Text = dt.Rows[idx][0];
e.Row.Cells[1].Text = dt.Rows[idx][1];
//or maybe
((TextBox)e.Row.Cells[0].FindControl("textBox1")).Text = dt.Rows[idx][0];
((Label)e.Row.Cells[1].FindControl("label2")).Text = dt.Rows[idx][1];
((CheckBox)e.Row.Cells[1].FindControl("chkbx1")).Selected = (bool)dt.Rows[idx][2];

idx++;
}
}

正如 Pranay 所说,您可能希望使用 Linq 和 join 从所有表中获取所需的数据,不过,您仍然可以通过任何其他您觉得合适的方式获取它们

关于c# - 如何使用 asp.net 和 c# 从不同的表中创建自定义列的 GridView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com