Это моя первая попытка строить мой собственный сайт, чтобы извинения заранее, если это глупый вопрос ..Update SqlDataSource SelectCommand Client Side
У меня есть GridView, который заполняется из 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 в вашем коде. – DevelopmentIsMyPassion
Если user1 обновляет элемент управления 'ctl04', он меняет' SqlDataSource1.SelectCommand' только для пользователя1 или всех пользователей? Если в настоящее время меняется 20 пользователей, становится ли это гонка, когда никто не может просматривать их изменения в элементе управления в gridView, поскольку другие пользователи продолжают менять их? – user3357963
Он просто изменится для этого пользователя. – DevelopmentIsMyPassion