我有一個帳戶頁面,用戶可以查看他們的帳戶信息..我希望他們能夠在這裏更改他們的密碼。路上,我已經成功地實現它的情況如下:SelectedIndex自動選擇頁面加載
Web服務:
[WebMethod]
public string ChangePassword(DataSet ds)
{
string database = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/dvd_forum.accdb;Persist Security Info=True";
OleDbConnection myConn = new OleDbConnection(database);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from Users", myConn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(myDataAdapter);
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";
myConn.Open();
myDataAdapter.Update(ds, "Users");
myConn.Close();
return "Password changed!";
}
接待代碼:
<asp:Label ID="username" runat="server" Text=""></asp:Label><span>'s Account</span><br />
<asp:TextBox ID="ChangePasswordInput" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Save"
onclick="ChangePassword_Click" />
<asp:Label ID="Label2" runat="server" Text=""></asp:Label><asp:RequiredFieldValidator id="RequiredFieldValidator3" runat="server" ErrorMessage="Required!" ControlToValidate="ChangePasswordInput"></asp:RequiredFieldValidator>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
回代碼:
public partial class Account : System.Web.UI.Page
{
public static DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
username.Text = User.Identity.Name;
}
localhost.Service1 myws = new localhost.Service1();
ds = myws.GetUserAcc(User.Identity.Name);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void ChangePassword_Click(object sender, EventArgs e)
{
//change password
int i = GridView1.SelectedIndex;
ds.Tables["Users"].Rows[i]["password"] = ChangePasswordInput.Text;
GridView1.DataSource = ds;
GridView1.DataBind();
localhost.Service1 myws = new localhost.Service1();
Label2.Text = myws.ChangePassword(ds);
}
}
的問題這是我必須在更改密碼之前選擇gridview中的行。有沒有什麼辦法可以自動選擇行,因爲只會有一行。或者,如何在不選擇行的情況下以不同的方式對其進行編碼?
謝謝。
在網格中只有一個用戶沒有辦法在沒有網格視圖的情況下獲取數據嗎?這樣,我可以在文本框中輸入密碼,然後使用更改密碼的按鈕來更新數據庫。對不起,我對C#和ASP.NET有了新的認識。 – user1389384
@ user1389384,在這種情況下,您不需要網格,但是如果您仍想使用它,則不必選擇網格行,只需在行索引中傳遞0即可。 ds.Tables [「Users」]。Rows [0] [「password」] = ChangePasswordInput.Text; – Habib
@ user1389384,查看我更新的答案 – Habib