首先,對不起,如果我在英語中犯了錯誤......
我正在用 c# 制作網頁,但在重繪 GridView 中顯示的資料時遇到了一些問題
我正在獲取資料拋出在 aspx 視圖中定義的 SqlDataSource:
<asp:SqlDataSource ID="PRODUCTOS_CON_STOCK" runat="server" ConnectionString="<%$ ConnectionStrings:XXXX %>" ProviderName="<%$ ConnectionStrings:XXX.ProviderName %>" DataSourceMode="DataSet" SelectCommand=" select EAN, CODART..... "> </asp:SqlDataSource>
當我單擊一個按鈕時,我會更新資料庫中的一些資料,并且我想用新資料重繪 GridView,而無需重新加載頁面。我正在制作:gridView.DataBind();,但這不會重繪 GridView 中的資料。
(在資料庫更新時)
是在GridView一個UpdatePanel.
我正在嘗試一些事情,例如:
重新評估
DataSourceID并制作gridView.DataBind();Assing the
DataSourceIDinnull, make thegridView.DataBind();和 alter 重新評估DataSourceIDand make thegridView.DataBind();我也試過:
DataSourceSelectArguments argumentos = new DataSourceSelectArguments();
PRODUCTOS_CON_STOCK.Select(argumentos);
gridView.DataBind();
- 設定
UpdatePanel為updatemode="Always"
但是所有這些都有效......有人可以幫助我嗎?
謝謝。
uj5u.com熱心網友回復:
為什么不在 PRODUCTOS_CON_STOCK 頁面上轉儲資料源設定。
我發現當你需要過濾、加載和播放時?
只需從標記中洗掉資料源。因此,在您的 GridView 中,洗掉 PRODUCTOS_CON_STOCK 的資料源 id 設定,然后洗掉資料源。
您必須多寫一點代碼,但您現在可以控制資料,更重要的是,可以控制您需要和想要的引數。
所以,假設我有這個標記:
一個網格,還有一個用于過濾網格的搜索/文本框。
<asp:Label ID="Label1" runat="server" Text="Search for Fighter jet" Font-Size="Large"></asp:Label>
<asp:TextBox ID="txtSearch" runat="server" Style="margin-left:15px" Font-Size="Large">
</asp:TextBox>
<asp:Button ID="cmdSearch" runat="server" Text="search"
style="margin-left:15px" CssClass="btn" OnClick="cmdSearch_Click" />
<br />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" CssClass="table" >
<Columns>
<asp:BoundField DataField="Fighter" HeaderText="Fighter" />
<asp:BoundField DataField="Engine" HeaderText="Engine" />
<asp:BoundField DataField="Thrust" HeaderText="Thrust" />
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:TemplateField HeaderText="View">
<ItemTemplate>
<asp:ImageButton ID="btnImage" runat="server" Height="68px" Width="149px"
OnClientClick ="popimage(this);return false"
ImageUrl = '<%# Eval("ImagePath") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
注意關閉 - 我確實使用向導構建了這個網格。但我隨后洗掉了 GV 的資料源 ID,并洗掉了在標記中創建的資料源。
所以,現在我要加載的代碼是這樣的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
LoadGrid("");
}
void LoadGrid(string MySearch)
{
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
{
using (SqlCommand cmdSQL = new SqlCommand("SELECT * from Fighters ", conn))
{
if (MySearch != "")
{
cmdSQL.CommandText = @" WHERE Fighter LIKE @Fighter '%'";
cmdSQL.Parameters.Add("Fighter", SqlDbType.NVarChar).Value = MySearch;
}
conn.Open();
DataTable rstData = new DataTable();
rstData.Load(cmdSQL.ExecuteReader());
GridView1.DataSource = rstData;
GridView1.DataBind();
}
}
}
我明白了:

并注意文本框的“可選”過濾器。如果你輸入一些文本,(我在 sql 中使用了“like”匹配),那么代碼就是這樣的:
protected void cmdSearch_Click(object sender, EventArgs e)
{
LoadGrid(txtSearch.Text);
}
但是,這里的想法通常是最好轉儲放置在標記中的 SqlDataSoruce,然后滾動 撰寫自己的代碼。問題是您可以嘗試在代碼中設定資料源,但也可以在頁面上使用資料源 - 它們相互爭斗。因此,嘗試上述想法 - 并洗掉標記中的資料源。
uj5u.com熱心網友回復:
最后我解決了這個問題。
就我而言,我在前面呼叫AJAX了 C# 方法,該方法是WebMethod HttpPost
問題是我保存在 a和 theSession中,雖然我再次執行 Select 陳述句,但我正在獲取舊的值。GridViewSqlDataSource
我保存了Session該資訊,因為AJAX直接執行該方法GridView并且SqlDataSourcenull
最后,我嘗試GridVeiw通過按鈕進行重繪 ,并且資訊已正確更新,因此,我隱藏了按鈕,并click在中模擬了按鈕AJAX:
$.ajax({
type: 'POST',
url: pageUrl,
data: JSON.stringify({ gridMod: gridMod }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {
document.getElementById("<%= btnReload.ClientID %>").click();
},
});
所以,點擊事件呼叫LoadGrid();,這一個執行:
private void LoadGrid()
{
DataSourceSelectArguments argumentos = new DataSourceSelectArguments();
PRODUCTOS_CON_STOCK.Select(argumentos);
eanList.DataBind();
}
這樣,我可以“自動”重繪 資料,而無需單擊任何按鈕
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/424703.html
