我正在创建一个编辑编辑/删除用户表,并为表中填充的每条记录创建了一个“编辑”按钮。我想做几件事。 1.当为特定用户按下编辑按钮时,打开一个名为“编辑”的新页面。 2.在“编辑”页面中填写表单控件,其中包含已按下的特定“编辑”按钮的相应用户信息。
我的问题是,如何区分用户表上按哪个按钮?
这就是我的表格:
这是生成表格和按钮的代码。
using (var db = new TestDBContext1())
{
SqlParameter param1 = new SqlParameter("@CustomerID", 0);
var outParam = new SqlParameter();
outParam.ParameterName = "@Counter";
outParam.SqlDbType = SqlDbType.Int;
outParam.Direction = ParameterDirection.Output;
var customers = await db.Database.SqlQuery<Customer>("DetailsANDCount @CustomerID, @Counter OUT", param1, outParam).ToListAsync();
}
答案 0 :(得分:1)
您可以使用唯一ID
来区分每个编辑按钮@Test
public void myTestFunction() {
String myJson1 = "{\"item1\":\"nil\",\"item2\":\"nil\",\"subItemList\":[{\"subItem1\":\"nil\",\"subItem2\":\"nil\"}]}";
String myJson2 = "{\"subItemList\":[]}";
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(new TypeToken<List<MySubItems>>(){ }.getType(), new MyOwnListDeserializer());
gsonBuilder.registerTypeAdapter(String.class, new MyOwnStringDeserializer());
Gson gson = gsonBuilder.create();
MySimpleObject myObj1 = gson.fromJson(myJson1, MySimpleObject.class);
MySimpleObject myObj2 = gson.fromJson(myJson2, MySimpleObject.class);
assertThat(myObj1.equals((myObj2))).isTrue();
}
class MySimpleObject implements Serializable {
String item1 = null;
String item2 = null;
List<MySubItems> subItemList;
@Override
public int hashCode() {
int hash = 17;
hash = 31*hash + ((item1 == null)? 0 :item1.hashCode());
hash = 31*hash + ((item2 == null)? 0 :item2.hashCode());
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof MySimpleObject) {
return this.hashCode() == obj.hashCode();
}
return super.equals(obj);
}
}
class MySubItems implements Serializable {
String subItem1 = null;
String subItem2 = null;
@Override
public int hashCode() {
int hash = 17;
hash = 31*hash + ((subItem1 == null)? 0 :subItem1.hashCode());
hash = 31*hash + ((subItem2 == null)? 0 :subItem2.hashCode());
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof MySubItems) {
return this.hashCode() == obj.hashCode();
}
return super.equals(obj);
}
}
class MyOwnStringDeserializer implements JsonDeserializer<String> {
@Override
public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return (json.getAsString().equals("nil"))? null : json.getAsString();
}
}
class MyOwnListDeserializer implements JsonDeserializer<List<MySubItems>> {
@Override
public List<MySubItems> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
List<MySubItems> list = new ArrayList<>();
for (JsonElement element : json.getAsJsonArray()) {
JsonObject subObj = element.getAsJsonObject();
MySubItems subItems = new MySubItems();
if (!subObj.get("subItem1").getAsString().equals("nil")) {
subItems.subItem1 = subObj.get("subItem1").getAsString();
}
if (!subObj.get("subItem2").getAsString().equals("nil")) {
subItems.subItem2 = subObj.get("subItem1").getAsString();
}
if (subItems.subItem1 != null || subItems.subItem2 != null) {
list.add(subItems);
}
}
return (list.size() == 0)? null : list;
}
}
单击编辑按钮时,使用以下代码
读取data-id<button class='edit' data-id="<?php echo $_GET["id"];?>"> EDIT</button>.
最好在下一页显示数据,使用bootstrap模型框和AJAX请求,这将与很多用户进行交互。
$(document).on('click', '.edit', function(){
var id = $(this).attr('data-id');
//code - you need to do
})
答案 1 :(得分:0)
如果您将“编辑”提交按钮的值属性更改为行ID,则可以使用此值来了解要编辑的记录ID并填充它。
"<input type='submit' name='edit' value='edit'>"
更改为
"<button name='edit' value='{$row['id']}'>Edit</button>"
请注意,如果整个表格是表单容器,则表中的所有输入都将被发布,而不仅仅是当前行。
答案 2 :(得分:0)
我会将编辑按钮改为超链接。然后就没有表格代码了。我假设您不需要通过&#34;删除&#34;编辑页面的参数(因为这是一个不同的操作)。
而不是
echo "<td><input type='submit' name='edit' value='edit'></td>";
写
echo "<td><a href='edit.php?id=".$row['id']."'>Edit</a></td>";
然后在edit.php中查找变量
$_GET["id"]
并使用它来搜索数据库并显示相应的记录以供编辑。
P.S。如果您仍然需要&#34;编辑&#34;超链接看起来像一个按钮,使用CSS很容易做到这一点。
答案 3 :(得分:0)
我是通过创建和调用javap函数来实现的,该函数将行的id作为参数传递。
echo"<tr>";
echo"<td>".$counter. ".</td>";
echo"<td>".$lname. " , " .$fname."</td>";
echo"<td>".$row['email']."</td>";
echo"<td>".$row['password']."</td>";
echo $admincolor . $stringAdmin ."</td>";
echo"<td><input type='checkbox' name='user[]' value='{$row['id']}'></td>";
echo"<td><input type='button' name='edit' value='edit' onclick='javascript:editUser(". $row['id'].");'></td>";
echo"</tr>";
该功能会将用户重定向到&#39;编辑&#39;页面传递url中id的值。
function editUser(id){
window.location = "edituser.php?id="+id;
}
在编辑页面上,我使用$ _GET来检索id值并编辑我的条目。
答案 4 :(得分:-1)
您可以更改表格并将其添加到表格中:
echo "<tr>";
echo "<td>".$counter.".</td>";
echo "<td>".$lname." , ".$fname."</td>";
echo "<td>".$row['email']."</td>";
echo "<td>".$row['password']."</td>";
echo $admincolor.$stringAdmin."</td>";
<form action="edit.php" method="post">
echo "<input type="text" name="id" value="$row['id']" style="visibilty: hidden;">";
echo "<td><input type="checkbox" name="delete"></td>";
echo "<td><input type="submit" name="edit" value="edit"></td>";
</form>
echo "</tr>"
首先我们使用POST方法定义了一个表单:<form action="edit.php" method="post">
然后让 edit.php 处理请求。
然后我们添加了一个隐藏的表单元素来存储和传递用户的ID:<input type="text" name="id" value="$row['id']" style="visibilty: hidden;">
可以使用value="..."
的“编辑”按钮但是如果你正在处理传递多个变量使用POST或GET方法,诀窍是使用带有visibility: hidden;
CSS属性的额外表单元素。
最终,在提交表单后,它会将$row['id']
的值传递给 edit.php 。
我们可以在 edit.php 中处理请求,如下所示:
<html>
<body>
User with this ID number: <?php echo $_POST["id"]; ?> will be edited.
</body>
</html>
官方指南:http://php.net/manual/en/tutorial.forms.php
您可以使用POST或GET方法传递变量。有关详细比较:https://stackoverflow.com/a/504993/2104879