jqgrid:重新加载页面后数据无法更改

时间:2011-07-01 06:27:28

标签: php jquery mysql jqgrid

我有一些使用表单编辑的网格。但是在编辑成功之后,页面将网格中的数据重新加载回到开头。这意味着编辑过程失败。

我很困惑如何将这个全部变量发布到进程页面,因为我在这个php页面使用了switch-case。我在表单中添加了一些隐藏的操作:

jqgrid script.

<form id="editdefdata" class="editable">
<input id="action" name="action" value="changedefdata" type="hidden" />
<button id="defupdate"><span>Update </span></button>
</form>

这个数据将发布到流程页面:

Problem_date:2011-06-10
Line:FA 14
Shift:N
Model:KD-R321EUD
Serial_number:116V4262
DIC:IQC
Def_class:B
Symptom:CD eject shifting
Cause:Under investigate
Symgrup:Function
Modgrup:KD
oper:edit
def_id:15

这是进程或php页面:

$dbc=mysql_connect(_SRV,_ACCID,_PWD) or die(_ERROR15.": ".mysql_error());
$db=mysql_select_db("qdbase",$dbc) or die(_ERROR17.": ".mysql_error());

switch(postVar('action')) {
      case 'oper':
                edit(postVar('def_id'),postVar('DIC'),postVar('Def_class'),postVar('Symptom'),postVar('Cause'));
                break;
        case 'deldefdata':
                //postVar blabla....
                break;
       }

function edit($def_id,$DIC,$Def_class,$Symptom,$Cause){
        $defID = mysql_real_escape_string($def_id);
        $DIC = mysql_real_escape_string($DIC);
        $Defclass = mysql_real_escape_string($Def_class);
        $Symp = mysql_real_escape_string($Symptom);
        $Cause = mysql_real_escape_string($Cause);
        $DIC=strtoupper($DIC);
        $Defclass=strtoupper($Defclass);

        $sql = "UPDATE oqc_defect SET DIC = '".$DIC."', Def_class = '".$Defclass."', ";
        $sql.= "Symptom = '".$Symp."', Cause = '".$Cause."' ";
        $sql.= "WHERE def_id = ".$defID;

echo $sql;
$result=mysql_query($sql) or die(_ERROR26.": ".mysql_error());
//echo $result;
mysql_close($dbc);
}

你能告诉我这个案子的正确答案吗?

2 个答案:

答案 0 :(得分:0)

在您的javascript中,您使用'id'作为记录的标识符 例如

colNames:['id', .....

在你的colModel中,我看不到 id 我看到 def_id

{name:'def_id', index:'def_id', hidden:true, width:55},

在你的php中使用postVar('id')来表示变量 所以在你的colModel中添加一个id定义。

答案 1 :(得分:0)

我已经找到了自己的答案。这让我很高兴,因为这个问题我疯了一个星期。我尝试过的所有方法,但是直到今天我才找到了真正的答案。

<强>第一

如果您想发布一些参数,您必须检查将发布到服务器的参数名称。在这种情况下,请确保您的colModel's name与您的php文件(_POST,postVar, or REQUEST)相同。

<强>第二

更改prmNames与当前参数操作相同。 在这种情况下,我需要改变:

prmNames: { oper:'action', editoper:'edit', id:'def_id'}

这是我问题的根本原因。这就是为什么脚本在识别某个变量时会混淆的原因。以下参数是正确的结果:

Problem_date:2011-06-10
Line:FA 14
Shift:N
Model:KD-R321EUD
Serial_number:116V4262
DIC:IQC
Def_class:B
Symptom:CD eject shifting
Cause:Under investigate
Symgrup:Function
Modgrup:KD
action:edit
def_id:15

switch(postVar('action')) {
      case 'edit':
                edit(postVar('def_id'),postVar('DIC'),postVar('Def_class'),postVar('Symptom'),postVar('Cause'));
                break;
        case 'deldefdata':
                //postVar blabla....
                break;
       }