【发布时间】:2013-05-30 19:38:37
【问题描述】:
这是我第一次尝试建立自己的网站,如果这是一个愚蠢的问题,请提前道歉..
我有一个从SqlDataSource 填充的网格视图。我还有一个带有AutopostBack=True 的控件,用于在更新后根据控件的内容更新gridview。
到目前为止我的代码是(我已经更改了真实的字段名称!)
testPage.aspx:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Lookup"
DataSourceID="SqlDataSource1">
<Columns>
//Column headings removed for clarity
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$
ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [Field1], [Field2],
[Field3], [Field4], [Field5], [Field6], [Field7], [Field8] FROM [Analysis]
ORDER BY [Field1], [Field2] DESC, [Field3] DESC"></asp:SqlDataSource>
testPage.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
if (ctl04.Value == null)
{
SqlDataSource1.SelectCommand = "SELECT [Field1], [Field2],
[Field3], [Field4], [Field5], [Field6], [Field7], [Field8]
FROM [Analysis] ORDER BY [Field1], [Field2] DESC, [Field3]
DESC";
}
else
{
SqlDataSource1.SelectCommand = "SELECT [Field1], [Field2],
[Field3], [Field4], [Field5], [Field6], [Field7], [Field8]
FROM [Analysis] WHERE [Lookup] IN ('" +
ctl04.Text.ToString().Replace(",","','") + "') ORDER BY
[Field1], [Field2] DESC, [Field3] DESC";
}
gridView1.DataBind();
}
}
到目前为止,这在测试时效果很好。但是,我不确定的是,如果说有多个用户使用此页面是否会导致问题,因为它正在运行服务器端。例如,如果有 1 个用户更新了控件,那么其他用户在第一次访问该页面时是否也会在 gridView 中看到该选择?
任何人都可以就如何使这项工作仅在客户端提供一些指示,以便控件中的选择不会影响其他用户吗?
【问题讨论】:
-
更新控制是什么意思?还要删除后面代码中对 gridview1.Databind 的重复调用。
-
如果 user1 更新了控件
ctl04,它是只更改 user1 还是所有用户的SqlDataSource1.SelectCommand?如果有 20 个用户同时更改,是否会变成一场竞赛,在其他用户不断更改他们的情况下,没有人可以在 gridView 中查看他们对控件的更改? -
它肯定会为那个用户改变。
-
你可能不会问你是否知道 :) 但问一些愚蠢的问题也没关系。没有人是完美的