사용자가 계정 정보를 볼 수있는 계정 페이지가 있습니다. 여기에서 비밀번호를 변경할 수 있기를 바랍니다. 방법은 나는 다음과 같다 그것을 구현하는 데 성공했다 :SelectedIndex 자동 페이지로드 선택
웹 서비스 :
[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을 전달하십시오. 표 [ "Users"]. 행 [0] [ "password"] = ChangePasswordInput.Text; – Habib
@ user1389384, 내 업데이트 된 답변 확인 – Habib