こんにちは、私はASPxGridviewに関していくつかの問題を抱えています。以下は私のコードはどこに私は正常にデータベースにレコードを更新することができます。しかし、フォームデータの編集で「更新」をクリックすると、正常に保存されますが、F5キーまたはページ再読み込みボタンを押すまで、aspxgridviewは自動的に更新されません。手動でリロードせずに変更を反映させるにはどうすればいいですか? "EditFormUpdateButton"をクリックするとjavascript関数を呼び出せますか?この問題を克服するために私を助けてください。DevExpress更新後に自動的にASPxGridViewを更新する
[ASPx]
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="ContentPlaceHolder1">
<script type="text/javascript">
function onBindGridview(s, e) {
GridView1.PerformCallback("Reload");
}
</script>
<dx:ASPxGridView ID="GridView1" ClientInstanceName="GridView1" runat="server" KeyFieldName="DeptId" AutoGenerateColumns="False" Width="100%"
OnRowUpdating="Gridview1_RowUpdating" OnCustomCallback="gridView_CustomCallback">
<Columns>
<dx:GridViewCommandColumn ShowNewButtonInHeader="true" ShowEditButton="true" VisibleIndex="0" />
<dx:GridViewDataTextColumn FieldName="DeptName" Name="Department" VisibleIndex="1">
<EditFormSettings VisibleIndex="0" />
</dx:GridViewDataTextColumn>
</Columns>
<SettingsEditing>
<BatchEditSettings EditMode="Row" />
</SettingsEditing>
<SettingsPopup>
<EditForm Width="300" />
</SettingsPopup>
<Templates>
<EditForm>
<table>
<tr>
<td>Department Name :
</td>
<td>
<dx:ASPxTextBox runat="server" ID="edDeptName" Text='<%# Bind("DeptName") %>'>
</dx:ASPxTextBox>
</td>
</table>
<div style="text-align: left; padding: 2px">
<dx:ASPxGridViewTemplateReplacement ID="UpdateButton" ReplacementType="EditFormUpdateButton"
runat="server" ></dx:ASPxGridViewTemplateReplacement>
<dx:ASPxGridViewTemplateReplacement ID="CancelButton" ReplacementType="EditFormCancelButton"
runat="server"></dx:ASPxGridViewTemplateReplacement>
</div>
</EditForm>
</Templates>
</dx:ASPxGridView>
</asp:Content>
コードはC#ファイルの背後にある
[C#]
string constr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDeapartment();
}
}
public void BindDeapartment()
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "get_department";
cmd.Connection = con;
try
{
con.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
GridView1.Columns[0].Visible = true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
protected void Gridview1_RowUpdating(object sender, ASPxDataUpdatingEventArgs e)
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "update_department";
cmd.Parameters.Add("@DeptId", SqlDbType.Int).Value = Convert.ToInt32(e.Keys["DeptId"]);
cmd.Parameters.Add("@DeptName", SqlDbType.NVarChar).Value = e.NewValues["DeptName"];
cmd.Connection = con;
try
{
con.Open();
cmd.ExecuteNonQuery();
e.Cancel = true;
GridView1.CancelEdit();
GridView1.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
protected void gridView_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
{
if (e.Parameters == "Reload")
BindDeapartment();
}